热情软件屋

 

在OnTimer()中调用Invalidate()重画,每次重画都闪烁很厉害


编号:QA004449
建立日期: 2001年10月14日 最后修改日期:2001年10月14日
所属类别:

linda:
    操作系统: Win2K
    编程工具: VC++ 6.0
    问题: 是一个基于对话框的程序,在OnPaint()里画了一个棋盘和若干个棋子,棋子数目不断变动的,此外在OnPaint()函数中还画了背景。在OnTimer()中改变棋子数目,并调用Invalidate()重画。不知道为何,虽然能过正确实现重画的目的,但是每次重画都闪烁很厉害。请指教。
    水平: 刚入门

回答:

    你不要每次都在OnTimer()中调用Invalidate()。你的程序应该有一个内部数组来记录哪些点已经有棋子了。而你的OnPaint()函数绘制背景和棋盘上已有的棋子。而你OnTimer()函数直接画新添加的点,擦除某些棋子(如果需要的化)。这样就不会闪烁了。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio