如何才能频繁绘图,但使窗口不闪烁

[复制链接]
查看11 | 回复4 | 2021-1-27 07:08:13 | 显示全部楼层 |阅读模式
最近遇到这个棘手的问题,
一时搞不明白,麻烦指点一下,多谢
我现在使用timer定时invalidrect.然后paint窗口hdc

想使用2个hdc,然后bitbit,但总出错,都搞不清楚,哪里错了,
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:08:13 | 显示全部楼层
1、尽量缩小要刷新的区域,刷新时根据指定的区域来刷新,不要一律全刷;
2、用双缓冲方式,你可以找段VC的代码参考一下。
回复

使用道具 举报

千问 | 2021-1-27 07:08:13 | 显示全部楼层
学习下
回复

使用道具 举报

千问 | 2021-1-27 07:08:13 | 显示全部楼层
.elseifuMsg==WM_PAINT
invokeBeginPaint,hWnd,addr@stPS
mov@hDC,eax
moveax,@stPS.rcPaint.right
subeax,@stPS.rcPaint.left
movecx,@stPS.rcPaint.bottom
subecx,@stPS.rcPaint.top
invokeBitBlt,@hDC,@stPS.rcPaint.left,@stPS.rcPaint.top,eax,ecx,\
hDcTemp,@stPS.rcPaint.left,@stPS.rcPaint.top,SRCCOPY
invokeEndPaint,hWnd,addr@stPS

在你的timer消息处理中在hDcTemp上绘图,最后
invokeInvalidateRect,hWnd,NULL,FALSE

回复

使用道具 举报

千问 | 2021-1-27 07:08:13 | 显示全部楼层
建议。。。
1.将wm_paint消息吃掉,自己画,就象楼上的代码一样
2.追求重画效率就不要用InvalidateRect
3.可考虑先刷成一个默认颜色再画你想要的东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行