为什么用了双缓冲绘图,图像还是闪烁?

来源:百度知道 编辑:UC知道 时间:2024/06/09 04:14:51
CRect rect;
GetClientRect(&rect);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
CBitmap *pOldBitmap = MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0, 0, rect.right, rect.bottom, RGB(255,255,255));
然后绘图

pDC->BitBlt(0, 0, rect.right,rect.bottom, &MemDC, 0, 0, SRCCOPY);
MemDC.SelectObject(pOldBitmap);

小妹初来乍到,希望各位高手多多指教!

响应WM_ERASEBKGND 消息,在OnEraseBkgnd函数里直接return NULL;

如果按楼上的方法后还是闪,只能说明你的图像太大或者电脑太烂。

双缓存只是用来避免窗口内的局部闪烁,但避免不了整个窗口的整体闪烁.
如果使用了双缓存还是闪烁的话,就要考虑一下优化图象算法,内存的释放等等.