WM_PAINT多次Bitblitting?

时间:2013-01-16 20:27:15

标签: c++ winapi bitmap wm-paint bitblit

这适用于C ++ - win32。基本上我已经从文件中将一个图像(bmp)加载到HBITMAP中,并将其bitblitted到主窗口的设备上下文。

如果我想更改图片,我该如何再次调用它?

我调用了InvalidateRectangle()和UpdateWindow(),但这会导致窗口控件闪烁。

1 个答案:

答案 0 :(得分:2)

通常您会使该区域无效(例如,通过InvalidateRect)并让您的WM_PAINT处理程序重新绘制它。您经常会出现闪烁的原因是因为您没有覆盖WM_ERASEBKGND处理程序,您的WM_PAINT处理程序没有进行双缓冲绘制,或者您正在使一个更大的区域无效(或重新绘制)比你需要的。

此页面可能有所帮助:Flicker-free Drawing: Techniques to eliminate flicker from your applications