剪裁区域和Invalidate函数

剪裁区域:

OnPaint函数中有一个参数是PainEventArgs类型,这个类中存储了一个矩形,这个矩形就是所谓的剪裁区域。剪裁区域就是窗口上的无效区域,也就是要重绘的区域。这个区域的大小是由WM_PAINT消息决定的。而能产生这个消息的机制有很多,比如:当窗体部分被其他窗体覆盖时,这时就会产生一个无效矩形,其大小是窗体被覆盖的部分的大小。其中我们可以手动让窗体产生一个无效区域,调用Invalidate()函数,这个函数有几个重载版本,当无参数时,表示使整个窗体矩形无效,剪裁区域为整个窗体。函数也可以带一个参数:一个矩形,那么产生的无效区域就是传进来的矩形区域

理解剪裁区域后我们就可以提高重绘的效率,不用每次重绘都重绘整个可视区域,这也是减少重绘是闪烁的好方法。在我们的OnPaint函数中,我们可以针对不同的剪裁区域来进行不同的重绘。

 

Invalidate函数: 

这个函数是使指定的区域加入窗口的无效区域,在下次重绘时,会对无效区域进行绘制,这个函数调用只会发送一个wm_paint消息,这个消息的只有在系统空闲时才会被系统处理,因此调用这个函数不会立即重绘屏幕,而只是增加无效区域,以待下次重绘时进行绘制。如果要在调用这个函数之后立即重绘屏幕,那么就要在调用此函数之后调用Update()函数,这个函数是使窗口立即重绘其无效区域,而不用等待空闲时间。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值