111,123
社区成员
发帖
与我相关
我的任务
分享
//ON_PAINT事件里面,我点击PANEL时会重画
//本来bmp是用来做双缓冲的,后来为了证实闪烁是DrawImage引起的,索性把要画的图像保存到了本地,这样来画
//结果刷新时还是闪烁明显,我测试了一下,需要15毫秒左右
Bitmap bmp = new Bitmap(@"f:\test.bmp", false);
e.Graphics.DrawImageUnscaled(bmp, 0, 0);
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();

