第三章 (3) GDI入门 什么是validate

本文介绍了GDI中的窗口重绘原理,包括有效区和无效区的概念。当窗口状态变化时,Windows通过识别无效区进行部分重绘。无效区需要更新,而有效区则不需要。通过InvalidateRect函数可以指定区域为无效,触发重绘。如果需要整体重绘窗口,可以使用该函数配合NULL参数。理解这一机制有助于深入学习Windows图形设备接口(GDI)和游戏编程中的画面更新策略。
摘要由CSDN通过智能技术生成


    之前我了解了BeginPaint和EndPaint,这两个函数能找到需要重绘的部分,并重绘之,什么是重绘的部分呢? 这个概念以及后面的validate,invalidate的概念书中介绍得有点模糊,下面是我的一点理解:



        我们的窗口不可能在桌面上一动不动,当它发生变化的时候,windows就会对其变化的地方,就像画画一样,擦掉不要的,重新画上需要的,例如,为了实现上图中,被压在下面的窗口显示在上面,其实蓝色框中挖去红色部分我们都可以保持不变,只要对红色的部分进行一点修改就可以了,这就是windows的策略。


        上面我们可以得到两个区域,1红色,2蓝色去掉红色所剩下的部分,1就是无效区,2就是有效区,有效就代表还能用,我们就不去管它,而无效的地方我们要让它变得有效,就需要重绘。


        可以说windows这种策略很聪明,可以偷不少懒,可是当我们走不了这种弯路,比如需要整个窗口显示动画,我们想对整个窗口重画,那么作者就提到了第二种策略:

GetDC(hwnd,hdc),而hdc这个参数就定义了你想重绘的区域矩形。而这部分同时变的无效,而对于无效的区域windows一直会去做WM_PAINT这件事,(其它活都不干了&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值