vcWindows的图形设备接口及绘图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2)图形刷新
• 绘图中必须考虑的重要问题,包括:
– 刷新请求; – 对刷新请求的响应; – 刷新方法。
• 出现如下情况时,系统发送WM_PAINT消 息作为刷新请求:
– 窗口大小的调整; – 窗口移动; – 被覆盖后的恢复。
(2)图形刷新
• 对三种不同刷新请求的响应
– 窗口移动后的刷新
• 用户区移动或显示 • 用户窗口大小改变 • 程序通过滚动条滚动窗口
– 被覆盖区域的刷新
• 被另一个窗口覆盖的恢复
– 对象穿越后的刷新(系统自动完成)
• 光标或图标拖过用户区
(2)图形刷新
应用程序在窗口中 绘制了一个椭圆, 颜色列表框覆盖椭圆 的一部分
关闭颜色选框后, 应用程序需要恢
复被覆盖部分的颜 色和形状
(2)图形刷新
• 无效区域
– 窗口被另一个窗口覆盖的区域
– 与设备无关的图形设备接口
• GDI——Graphics Device Interface • 就是操作系统屏蔽了硬件设备的差异 • 用户编程时无需考虑特殊的硬件设置
– 实现系统与用户或绘图程序之间的信息交换 – 控制在输出设备上显示图形或文字
2020/2/26
3
(1) GDI的基本概念
• 用GDI和设备驱动程序支持图形的输出
• void ReleaseDC(HWND hwnd);
2020/2/26
15
(3) 获取设备环境的方法
项目 函数 使用环境
操作区域 释放设备环境 所用函数
BeginPaint 与 GetDC 的区别
BeginPaint 函数
GetDc 函数
只用于图形刷新时获取 设备环境
使用较为广泛
使用 BeginPaint 函数获 取设备环境后,操作区 域为无效区域
支持与设备无关的图形
2020/2/26
开发人员只要建立与输出设备的关联, 让系统加载相应的设备驱动程序
4
(1) GDI的基本概念
• 设备环境 (Device Contexts, DC)
– A device context is a structure that defines a set of graphic objects and their associated attributes, as well as the graphic modes that affect output.
由 EndPaint 函数释放
– Device independence is one of the chief features of Microsoft Windows.
– Applications can draw and print output on a variety of devices.
Windows
GDI和 设备驱 动程序
– 设备环境的属性的集合 (设备描述表 ) – 应用程序通过设备描述表的句柄,建立与设备
的联系,实现图形操作。
2020/2/26
5
(1) GDI的基本概念
• 应用程序通过设备描述表的句柄,建立与 设备的联系,实现图形操作。
直接访问

不允许

Win系统
外设
提供
统一的设备环境(DC)
使应用程序与设备相连
GetCurrentPosition LineTo … CreateFont CreateFontIndirect SelecteObject CreatePen CreatePenIndirect SelecteObject …
(1) GDI的基本概念
应用 程序
设备描述表 及其属性
应用程序每一次图形 操作均参照设备描述 表中的属性执行
• HDC WINAPI BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
• BeginPaint(hwnd,&ps)
– 调用EndPaint函数释放由BeginPaint获取的设 备环境
• void EndPaint(HWND hwnd, PAINTSTRUCT &ps)
RECT rcPaint;
//无效矩形标识
BOOL fRestore;
//系统保留
BOOL fIncUpdate;
//系统保留
BYTE rgbReserved[16];//系统保留
2020/2/26 }PAINTSTRUCT;
12
(2)图形刷新
• 常用的刷新方法
– 保存副本 刷新时将副本拷贝到相应的窗口中。
2020/2/26
14
(3) 获取设备环境的方法
• 方法二:调用GetDC函数
– 如果绘图工作并非由WM_PAINT消息驱动,则 调用GetDC函数获取设备环境。
• HDC GetDC(HWND hWnd); • hdc=GetDC(hwnd);
– 由GetDC获取的设备环境须用ReleaseDC释放
– 记录事件 刷新时重新执行这个曾经发生的事件。
– 重新绘制 将图形绘制处理程序放在消息WM_PAINT响应
模块中,刷新时重绘图形。
2020/2/26
13
(3) 获取设备环境的方法
• 方法一:调用BeginPaint函数
– 响应WM_PAINT消息刷新图形时,调用 BeginPaint函数获取设备环境
2020/2/26
6
(1) GDI的基本概念
属性 背景色 背景模式 … 当前笔位置
字体
画笔

Device Contexts
默认值
相关函数
WHITE OPAQUE …
GetBkColor SetBkColor GetBkMode SetBkMode …
(0,0) SYSTEM FONT BLACK PEN …
内容提要
• Windows图形设备接口 • 绘图工具和颜色 • 常用绘图函数 • 应用实例
2020/2/26
1百度文库
4.1 Windows图形设备接口(GDI)
• GDI的基本概念 • 图形刷新 • 获取设备环境的方法 • 映像模式
2020/2/26
2
(1) GDI的基本概念
• GDI是Windows的重要组成部分
– PAINTSTRUCT结构
• Windows为每个窗口建立一个PAINTSTRUCT结构
• 其中含有包围无效区域的一个最小矩形的结构RECT
• 程序可据此矩形执行刷新操作
Typedef struct tagPAINTSTRUCT
{
HDC hdc;
//设备环境句柄
BOOL fErase;//一般取真值,表示擦除无效矩形的背景
相关文档
最新文档