使用GDI+在PANEL上画图,结果发现在DrawImage的时候速度太慢,导致屏幕会很明显的闪一下
程序在点击时刷新界面代码超级简单://ON_PAINT事件里面,我点击PANEL时会重画
//本来bmp是用来做双缓冲的,后来为了证实闪烁是DrawImage引起的,索性把要画的图像保存到了本地,这样来画
//结果刷新时还是闪烁明显,我测试了一下,需要15毫秒左右
Bitmap bmp = new Bitmap(@"f:\test.bmp", false);
e.Graphics.DrawImageUnscaled(bmp, 0, 0);我看到网上评测,GDI中的BitBlt效率比DrawImage好,不过测试了一下,快是快了很多,稳定的2毫秒,不过还是闪bmp = new Bitmap(@"f:\test.bmp", false);
Graphics g = Graphics.FromImage(bmp);IntPtr dcCtr = e.Graphics.GetHdc();
IntPtr dcImg = CreateCompatibleDC(dcCtr);
SelectObject(dcImg, bmp.GetHbitmap());BitBlt(dcCtr, 0, 0, Width, Height, dcImg, 0, 0,TernaryRasterOperations.SRCCOPY);DeleteDC(dcImg);
e.Graphics.ReleaseHdc(dcCtr);
e.Graphics.Dispose();
麻烦大家看看,给个解决方案吧