当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 >  第2章 Windows的图形设备接口及Windows绘图 >  02-1 Windows图形设备接口 >  02-1-2 图形刷新

返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表

02-1-2 图形刷新在线视频

02-1-2 图形刷新

下一节:02-1-3 获得设备环境方法

返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表

02-1-2 图形刷新课程教案、知识点、字幕

我们现在 来了解第二个概念

第二个概念叫做图形刷新

图形刷新是绘图过程中必须考虑的一个重要问题

图形刷新 它包括这么几个部分

第一个是要提出刷新的请求

我们说VC++的程序设计它遵循的是事件驱动消息响应的机制

也就是说你既然提出了刷新请求

实际上 就是一个事件驱动

那么为了响应这个事件

我们就要对刷新的请求进行响应

那么如何响应呢?

他就有一个刷新的方法

那我们来了解一下刷新请求

什么时候会发出刷新请求呢?

在窗口大小的调整、窗口的移动

以及被覆盖后区域的恢复

这些过程 都会发出刷新的请求

比如说大家看到了这个图例

应用程序在窗口中绘制了一个椭圆

那么颜色列表框覆盖了椭圆的一部分

当你选中了相应的颜色后

这个颜色设置框就要关闭掉

那么关闭颜色选框后

应用程序需要恢复被覆盖部分的颜色和形状

这个时候就发生了刷新的请求

以及对刷新请求的响应

然后我们来看一下系统对刷新请求的响应

当用户区的内容需要刷新的时候

系统向应用程序的消息队列发送WM这个Win Message

就是Window Message这个窗口消息

Win Message的PAINT的消息

系统在应用程序的消息队列中就加入了这个消息

以通知窗口函数,这个WndProc函数

来执行这个刷新处理

刷新的话,通常有三种方式

比如说窗口移动后的刷新

被覆盖区域的刷新

以及对象穿越后的刷新

那么对象穿越后的刷新

通常由系统自动完成

那么我们说窗口移动刷新

主要是用户区域移动、窗口大小改变

以及程序通过滚动条滚动窗口

这些都会发生窗口移动后的刷新请求

被覆盖区域的刷新刚才已经说了

是窗口被另一个窗口覆盖时恢复这个时候的需要的刷新

而对象穿越的刷新

比如说 你光标在应用程序界面中的移动

那么光标是有一个图案的

那么在移动过程中

他是要覆盖它光标的那个区域的内容的

那么这个时候

光标穿过用户区的时候

它是需要刷新的

再比如说 你拉动一个图标

这个图标拖过用户区

那么在拖的过程中

这个图标在运行轨迹上

也是覆盖了原来的内容

那么这个时候 当光标穿过用户区

以及图标拖过用户区

这种对象穿越后的刷新

这个呢,系统能够自动完成

那么用户在编写你们的相关的应用程序过程中

是不要考虑这个刷新的

我们刚才说到

当一个窗口被另外一个窗口覆盖的时候是需要刷新的

那么一个窗口被另一个窗口覆盖的区域

我们 称之为无效区域

因为原来的窗口已经被覆盖了

那个被覆盖的那块地方你是无法操作的

所以叫做无效区域

Windows系统为每个窗口

建立了一个PAINTSTRUCT这么一个结构

这个结构中就包含了包围无效区域的一个最小的矩形的结构

应用程序 可以根据这个无效矩形执行刷新操作

也就是说它能够捕捉到被覆盖区域的几何形状和大小

然后对这个结构、对这个形状进行刷新

这里,给大家看一下Windows系统它的PAINTSTRUCT的结构

在这个结构里它有6个参数

第一个参数就是我们刚才介绍的设备环境的句柄

第二个参数表示擦除无效矩形的背景

这个呢,它是一个BOOL值

第三个参数,它是一个无效矩形的标识

无效矩形这个标识,大家看到它这里的数据类型是RECT

实际上这个RECT是什么呢?

大家再看这里的内容

它是一个最小矩形的结构

所以它也是一个数据结构

它作用是标识无效矩形

所以它包含了无效矩形的左上角和右下角的坐标

大家知道,一个左上角一个右下角的坐标能够确定

或者说能够唯一的确定一个矩形

好了,那么后面这几个参数大家编程的过程中不要去理会它

它是系统保留的一些参数

那么对刷新的请求它是要进行响应的

响应过程中它就要选择用什么样的方法去刷新

常用的Windows应用程序刷新的方法主要有这么几种

第一个,是记录事件

刷新时重新执行这个曾经发生的事件

第二种方法,是保留副本

刷新时将副本拷贝到相应的窗口区域

当然,这么个做法是要有额外的内存开销的

第三个是重新绘制

将图形绘制处理程序放在这个WM_PAINT的这个消息响应模块中

刷新时把需要刷新的部分重新给他画一遍,叫做重新绘制

这里是三种常用的刷新办法

VC++面向对象与可视化程序设计(上):Windows编程基础课程列表:

第0章 课前讨论

-讨论实录

--0-0

第1章 Windows应用程序基础

-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

第2章 Windows的图形设备接口及Windows绘图

-02-1 Windows图形设备接口

--02-1-1 GDI

--02-1-2 图形刷新

--02-1-3 获得设备环境方法

--02-1-4 映像模式

-02-2 绘图工具与颜色

--02-2-1 画笔

--02-2-2 画刷和颜色

-02-3 常用绘图函数

--02-3 常用绘图函数

-02-4 例题和作业

--02-4-1 例题1

--02-4-2 例题2

--02-4-3 例题3

--02-4-4 例题4

--02-4-5 作业

-第2章源代码

--外部链接

--外部链接

第3章 文本与字体

-3-1 设置文本的设备环境

--3-1 设置文本的设备环境

-3-2 文本的输出过程

--3-2 文本的输出过程

-3-3 例题和作业

--3-3-1 (例3-1)

--3-3-2 (例3-2)

--3-3-3 (例3-3)

--3-3-4 (例3-4)

--3-3-5 (作业)

-第3章源代码

--外部链接

第4章 Windows应用程序中的键盘与鼠标

-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章 资源在Windows编程中的应用

-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章源代码

--外部链接

-第一次作业

--第一次作业--作业

-第二次作业

--第二次作业--作业

-第三次作业

--第三次作业--作业

02-1-2 图形刷新笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。