局部重绘问题 谢谢

超gogo 2009-10-26 05:31:00
我想要局部重绘一个RECT区域,这部分区域用timer控制 不停的变化来达到计时的目的,但是不希望每次都刷新所有的部分,所以想到了在timer的响应函数中用IvalidateRect(&变化区域)

可是现在的问题是在计时过程中,我需要在非上面RECT的区域内做改变,例如对某个区域进行标记。绘制代码都在OnPaint中写

可是应用IvalidateRect()每一秒刷新时将我在其他区域的标记也刷新没了,标记区很散,所以希望局部重绘。

请问我该如何实现呢?

谢谢
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zidene 2009-10-26
  • 打赏
  • 举报
回复
InvalidateRect(&rect,true),rect是你预先设定的想要重绘的区域。
超gogo 2009-10-26
  • 打赏
  • 举报
回复
请大家继续啊 谢谢
超gogo 2009-10-26
  • 打赏
  • 举报
回复
比如说我再OnPaint中写上两个计数的static控件

然后将rect设为其中一个的,用同一个timer

运行时其中一个显示数倒计时 另一个消失了
liumenghappy 2009-10-26
  • 打赏
  • 举报
回复
先找到重绘区域
然后IvalidateRect(&变化区域)
再跟上updatewindow()就行了
dirdirdir3 2009-10-26
  • 打赏
  • 举报
回复
非rect里面的应该不会刷新的啊,是不是你的invalidaterect用的有问题?
gamedragon 2009-10-26
  • 打赏
  • 举报
回复
InvalidateRect会把无效的区域合并起来。只要你所有的绘图操作都是在OnPaint里,就不会有问题啊。
  • 打赏
  • 举报
回复
看不懂。。
还不如获取dc直接画呢

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧