当前位置:编程学习 > C#/ASP.NET >>

非常着急!用过Win32 API函数bitblt的进来,问一下用Bitblt解决绘图闪烁的问题(不使用.net的双缓冲)

由于我使用C#编写一个wince下的绘图应用程序,因为.net Compact Framework不支持双缓冲,所以只能使用bitblt API来解决绘图闪烁的问题。但是使用之后屏幕没有出现预想中的图形,而是黑屏。代码如下:
               [DllImport(@"gdi32.dll")] 
                public   static   extern   int   BitBlt(IntPtr   hdcDest,   int   nXDest,   int   nYDest,   int   nWidth,   int   nHeight,   IntPtr   hdcSrc,   int   nXSrc,   int   nYSrc,   uint   dwRop);       

                const   uint   SRCCOPY   =   0xCC0020;                 
                private   void   pnlECG_Paint(object   sender,   PaintEventArgs   e) 
                { 
                        Bitmap   bmpLines   =   new   Bitmap(800,   500); 
                        Graphics   grfx   =   Graphics.FromImage(bmpLines); 
                        Pen   SquarePen   =   new   Pen(Color.Blue); 
                        //下面是一些绘制曲线的代码 
                        grfx.DrawLines(SquarePen   ,   points);//points为准备好的Point曲线数组 
                        ................................................. 
                        //绘图代码结束 
                        IntPtr   DC1   =     e.Graphics.GetHdc(); 
                        IntPtr   DC2   =   grfx.GetHdc(); 
                        BitBlt(DC1,   0,   0,   800,   500,   DC2,   0,   0,   SRCCOPY); 
                        e.Graphics.ReleaseHdc(DC1); 
                        grfx.ReleaseHdc(DC2); 
                        //e.Graphics.DrawImage(bmpLines,   0,   0);//不使用bitblt之前的帖图代码,工作正常 
                        bmpLines.Dispose(); 
                        grfx.Dispose(); 
                        SquarePen.Dispose(); 
                        brush.Dispose(); 
                } --------------------编程问答--------------------   没搞过,帮你顶一下. --------------------编程问答-------------------- 谢谢 发现pictureBox似乎默认是开着双缓冲的 看来用Panel本身就是个错误 --------------------编程问答-------------------- 到wince平台测试正常,但是屏幕闪烁还是很厉害,不知道什么原因,妈的 --------------------编程问答-------------------- 没用过,帮顶了。。 --------------------编程问答--------------------   IntPtr       DC1       =           e.Graphics.GetHdc();   
-----------------------------------------------------------------
DC1 里没有图像 当然是黑色的
--------------------编程问答-------------------- 楼上的兄弟 DC1是目标DC 需要原来就有图像?


显示黑屏的程序到了wince上就能显示出来了 但是速度不敢恭维,能看到屏幕被一刷一刷的(原图象-》默认背景色-》新图像) --------------------编程问答-------------------- 这个不知道对你有没有用
http://blog.csdn.net/wzuomin/archive/2007/07/17/1695152.aspx --------------------编程问答-------------------- 谢谢楼上的兄弟 其实有用。。。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,