VC解决绘图闪烁问题
最近用VC画图,老是闪烁,上网查了一些资料,说是重载OnEraseBkgnd这个擦除背景函数,然后返回TRUE即可,代码如下:
BOOL CDlgUnionPav::OnEraseBkgnd(CDC* pDC)
{
//return CDialog::OnEraseBkgnd(pDC);
return TRUE; //返回true表示不擦除此区域背景
}
我试了下,这样添加后确实不闪了,但是又出现了另外一个问题,就是在画图时候,把整个对话框其它部分的背景也不擦了,导致其它地方很乱,比如按钮的背景很乱,这显然不是我想要的结果,后来我又查了一些资料,发现了一个奇迹,其实根本不用那么麻烦,VC里面直接有个函数
void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
这个函数,可以刷新指定矩形区域,而且可以控制该区域的背景是否擦除,所以把需要显示图像的区域设进来,然后将第二个参数设为false就可以了 ,这样在画图时候,该区域的背景就不会被擦除了,也就不会闪烁了,其它的区域也同样不会出现混乱现象。
这个方法是我今天早上研究了一个多小时搞定的,我觉得很有用,所以拿出来给大家分享下,本人热爱编程,同道中人可加QQ:374522573
摘自 jice1001的专栏
补充:软件开发 , Vc ,