在OnTimer()中调用Invalidate()重画,每次重画都闪烁很厉害
编号:QA004449
建立日期: 2001年10月14日 最后修改日期:2001年10月14日
所属类别:
linda:
操作系统: Win2K
编程工具: VC++ 6.0
问题: 是一个基于对话框的程序,在OnPaint()里画了一个棋盘和若干个棋子,棋子数目不断变动的,此外在OnPaint()函数中还画了背景。在OnTimer()中改变棋子数目,并调用Invalidate()重画。不知道为何,虽然能过正确实现重画的目的,但是每次重画都闪烁很厉害。请指教。
水平: 刚入门
回答:
你不要每次都在OnTimer()中调用Invalidate()。你的程序应该有一个内部数组来记录哪些点已经有棋子了。而你的OnPaint()函数绘制背景和棋盘上已有的棋子。而你OnTimer()函数直接画新添加的点,擦除某些棋子(如果需要的化)。这样就不会闪烁了。
此问题由李海回答。
| |
|
|
| |
|
|