当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第2章 Windows的图形设备接口及Windows绘图 > 02-1 Windows图形设备接口 > 02-1-2 图形刷新
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
我们现在 来了解第二个概念
第二个概念叫做图形刷新
图形刷新是绘图过程中必须考虑的一个重要问题
图形刷新 它包括这么几个部分
第一个是要提出刷新的请求
我们说VC++的程序设计它遵循的是事件驱动消息响应的机制
也就是说你既然提出了刷新请求
实际上 就是一个事件驱动
那么为了响应这个事件
我们就要对刷新的请求进行响应
那么如何响应呢?
他就有一个刷新的方法
那我们来了解一下刷新请求
什么时候会发出刷新请求呢?
在窗口大小的调整、窗口的移动
以及被覆盖后区域的恢复
这些过程 都会发出刷新的请求
比如说大家看到了这个图例
应用程序在窗口中绘制了一个椭圆
那么颜色列表框覆盖了椭圆的一部分
当你选中了相应的颜色后
这个颜色设置框就要关闭掉
那么关闭颜色选框后
应用程序需要恢复被覆盖部分的颜色和形状
这个时候就发生了刷新的请求
以及对刷新请求的响应
然后我们来看一下系统对刷新请求的响应
当用户区的内容需要刷新的时候
系统向应用程序的消息队列发送WM这个Win Message
就是Window Message这个窗口消息
Win Message的PAINT的消息
系统在应用程序的消息队列中就加入了这个消息
以通知窗口函数,这个WndProc函数
来执行这个刷新处理
刷新的话,通常有三种方式
比如说窗口移动后的刷新
被覆盖区域的刷新
以及对象穿越后的刷新
那么对象穿越后的刷新
通常由系统自动完成
那么我们说窗口移动刷新
主要是用户区域移动、窗口大小改变
以及程序通过滚动条滚动窗口
这些都会发生窗口移动后的刷新请求
被覆盖区域的刷新刚才已经说了
是窗口被另一个窗口覆盖时恢复这个时候的需要的刷新
而对象穿越的刷新
比如说 你光标在应用程序界面中的移动
那么光标是有一个图案的
那么在移动过程中
他是要覆盖它光标的那个区域的内容的
那么这个时候
光标穿过用户区的时候
它是需要刷新的
再比如说 你拉动一个图标
这个图标拖过用户区
那么在拖的过程中
这个图标在运行轨迹上
也是覆盖了原来的内容
那么这个时候 当光标穿过用户区
以及图标拖过用户区
这种对象穿越后的刷新
这个呢,系统能够自动完成
那么用户在编写你们的相关的应用程序过程中
是不要考虑这个刷新的
我们刚才说到
当一个窗口被另外一个窗口覆盖的时候是需要刷新的
那么一个窗口被另一个窗口覆盖的区域
我们 称之为无效区域
因为原来的窗口已经被覆盖了
那个被覆盖的那块地方你是无法操作的
所以叫做无效区域
Windows系统为每个窗口
建立了一个PAINTSTRUCT这么一个结构
这个结构中就包含了包围无效区域的一个最小的矩形的结构
应用程序 可以根据这个无效矩形执行刷新操作
也就是说它能够捕捉到被覆盖区域的几何形状和大小
然后对这个结构、对这个形状进行刷新
这里,给大家看一下Windows系统它的PAINTSTRUCT的结构
在这个结构里它有6个参数
第一个参数就是我们刚才介绍的设备环境的句柄
第二个参数表示擦除无效矩形的背景
这个呢,它是一个BOOL值
第三个参数,它是一个无效矩形的标识
无效矩形这个标识,大家看到它这里的数据类型是RECT
实际上这个RECT是什么呢?
大家再看这里的内容
它是一个最小矩形的结构
所以它也是一个数据结构
它作用是标识无效矩形
所以它包含了无效矩形的左上角和右下角的坐标
大家知道,一个左上角一个右下角的坐标能够确定
或者说能够唯一的确定一个矩形
好了,那么后面这几个参数大家编程的过程中不要去理会它
它是系统保留的一些参数
那么对刷新的请求它是要进行响应的
响应过程中它就要选择用什么样的方法去刷新
常用的Windows应用程序刷新的方法主要有这么几种
第一个,是记录事件
刷新时重新执行这个曾经发生的事件
第二种方法,是保留副本
刷新时将副本拷贝到相应的窗口区域
当然,这么个做法是要有额外的内存开销的
第三个是重新绘制
将图形绘制处理程序放在这个WM_PAINT的这个消息响应模块中
刷新时把需要刷新的部分重新给他画一遍,叫做重新绘制
这里是三种常用的刷新办法
-讨论实录
--0-0
-1-1 Windows应用程序的特点
--1-1
-1-2 可视化编程
--1-2
-1-3 关于API
--1-3-1
--1-3-2
-1-4 Windows应用程序组成及编程步骤
--1-4-1
--1-4-2
-1-5 应用程序举例
--1-5-1
--1-5-2
--1-5-3
-02-1 Windows图形设备接口
-02-2 绘图工具与颜色
-02-3 常用绘图函数
-02-4 例题和作业
-第2章源代码
--外部链接
--外部链接
-3-1 设置文本的设备环境
-3-2 文本的输出过程
-3-3 例题和作业
-第3章源代码
--外部链接
-4-1 Windows 应用程序中的键盘与鼠标
--4-1
-4-2 键盘的操作应用举例
--4-2
-4-3 例题
--4-3
-4-3 鼠标在应用程序中的应用
--4-3
-4-4 例题4-4
--4-4
-第4章源代码
--外部链接
-5-1 菜单和加速键资源及其应用
--5-1
-5-1(例1)
--5-1(例1)
-5-2 位图资源及其应用
--5-2
-5-3 对话框资源及其应用
--5-3-1
--5-3-2
-5-4 图标资源的应用
--5-4
-第5章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业