mfc的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 09:04:59
我用gdi函数绘制了一个按钮,想鼠标放在按钮上时变色,于是在mousemove消息响应中加了Invalidate函数重绘改变颜色,当我一动鼠标时界面闪得很厉害~怎么可以鼠标动时不产生闪烁感??或者有其它方法实现这个功能吗(按钮只是一个长方形rectangle,我不用系统的按钮)??谢谢!!
谢谢tanlerstar!再添加一个问题~~我在mfc中贴图时~发现贴透空图边缘有锯齿,改怎么办??谢谢~答得好加分!

Invalidate的作用是使得整个窗口失效,然后重新调用OnDraw函数绘制整个窗口,而OnDraw函数绘制的时候先是用底色填充整个窗口(默认是白色),然后再重新绘制所有图形。
所以你每移动一次鼠标,窗口都是先变白色,然后再绘制图形。肉眼看起来肯定有闪烁的了
可以用InvalidateRect函数,参数是Rect,也就是使得按钮所在的矩形区域失效,只是重绘矩形区域,而其他的不用重绘,这样就不会明显有闪烁了。当然,按钮会稍微有点闪烁的
也可以在OnDraw中用双缓冲技术,这样就不会产生底色填充问题,当然就不会有闪烁。双缓冲也很简单的,上网搜个例子就可以了