【发布时间】:2013-01-16 20:27:15
【问题描述】:
这适用于 C++ - win32。基本上,我已经从文件中将图像 (bmp) 加载到 HBITMAP 中,并将其位传输到主窗口的设备上下文中。
如果我想更改图像,我该如何再次调用它?
我调用了 InvalidateRectangle() 和 UpdateWindow() 但这会导致窗口控件闪烁。
【问题讨论】:
标签: c++ winapi bitmap wm-paint bitblit
这适用于 C++ - win32。基本上,我已经从文件中将图像 (bmp) 加载到 HBITMAP 中,并将其位传输到主窗口的设备上下文中。
如果我想更改图像,我该如何再次调用它?
我调用了 InvalidateRectangle() 和 UpdateWindow() 但这会导致窗口控件闪烁。
【问题讨论】:
标签: c++ winapi bitmap wm-paint bitblit
通常您使该区域无效(例如通过InvalidateRect)并让您的WM_PAINT 处理程序重新绘制它。经常闪烁的原因是因为您没有覆盖WM_ERASEBKGND 处理程序,您的WM_PAINT 处理程序没有进行双缓冲绘制,或者您正在使(或重新绘制)比您需要的更大的区域无效.
此页面可能会有所帮助:Flicker-free Drawing: Techniques to eliminate flicker from your applications
【讨论】: