关于MFC画图闪烁的问题

我在做数字图像处理,用的是CxImage库。我现在需要实现一个动画效果,即是每画一些点然后暂停一下。我尝试用ima->SetPixelColor(i,j,rgb); Invalidate(); UpdateWindow(); Sleep(1);或ima->SetPixelColor(i,j,rgb); InvalidateRect(rec); UpdateWindow(); Sleep(1);之后动画效果是有了,但是画面不停闪烁,问下应该如何解决?谢谢!我用的是MFC多文档。回1楼,关于窗口更新时背景删除属性,我已对OnEraseBkgnd进行重载,发现可以,但是出现另一个问题就是最大化窗口以后画面会卡住,如何解决?回2楼,我看了下双缓冲绘图好像只适用于用CBitmap画图,但是我用的是外部库CxImage,应该不能用吧。另外onsize的时候由于无法获得我要画的那个图的句柄,只能Invalidate(),还是和原来一样改变窗口大小窗体显示内容没有刷新,所以还是不行。
2026年09月24日 00:35
有3个网友回答
网友(1):

双缓冲绘图。网上搜一下,一大堆。还有,就是删除。窗口的更新时的背景删除属性,

你的补充问题,我没试验过,但通过修改重载onsize应该能够解决,在onsize的时候重新绘图

网友(2):

用内存作图
MemDC搜索一大堆

网友(3):

你可以 重写 消息函数 然后 再用双缓冲
不要用 ima->SetPixelColor(i,j,rgb); InvalidateRect(rec); UpdateWindow(); Sleep(1);