双缓冲原理
MFC中绘制动画的基本思路是在固定时间间隔内绘制图像,然后擦除旧图像再绘制新图像,这样连续 起来就在人类的视觉上形成动画。为了实现这种“绘制-擦除-再绘制”的思路,较老的一种方法是在 OnDraw函数中绘图,然后利用InValidate函数来清空屏幕,然后再绘制新图。因为绘制新旧两幅图像之 间必定需要一定的计算和绘制时间,导致一个后果就是图像闪烁的很厉害。
为了避免闪烁,借助于双缓冲的思想,我们可以在显示一幅图像的同时,在后台计算一幅新图像,并 将新图像保存为一个完整的位图。当时间间隔到期后,一次性将新图像位图读入并显示出来即可。这样 将大大节省计算和绘制的时间。实际运行中,人类的视觉基本感知不到任何闪烁。
定时器
(1) 创建定时器。创建定时器使用SetTimer函数。
SetTimer函数的原型
UINT_PTRSetTimer(
HWND hWnd,//窗口句柄
UINT nIDEvent,//定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT nElapse,//时间间隔,单位为毫秒