首页
社区
课程
招聘
大家帮我看看这个问题怎么解决。。
发表于: 2005-12-6 20:53 4379

大家帮我看看这个问题怎么解决。。

2005-12-6 20:53
4379
显是有问题,会一闪一闪的
我想问题是出在用InvalidateRect发送WM_PAINT消息时,我用的是:
invoke InvalidateRect,hWnd,NULL,TRUE    这种方法
也就是先擦除背景,再重新画图,这样每次收到WM_PAINT消息的时候屏幕就被全部画为白色后再重新画图,看起来就是一闪一闪的。

我把 InvalidateRect函数改了一下:
invoke InvalidateRect,hWnd,NULL,NULL,也就是不擦除背景。
再设置只有被移动的方块才重画,停在下方的方块不再重画,对移动的方块我是把方块上一个位置先擦除,再画下一个位置。
  
  但结果还是很难看,不移动的方块不需要重画就不会闪,可是移动的方块看起来还是闪得相当厉害,真是没办法了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 4908
活跃值: (2343)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
建议你不要在WM_PAINT中重画,那样重画的速度太快。
使用定时器,定时发送InvalidateRect,最好把RECT的范围缩小。

typedef struct _RECT {    // rc  
    LONG left;
    LONG top;
    LONG right;
    LONG bottom;
} RECT;
2005-12-6 22:03
0
游客
登录 | 注册 方可回帖
返回
//