第4章 Windows的图形设备接口及Windows绘图.ppt

上传人:王** 文档编号:595492 上传时间:2023-12-08 格式:PPT 页数:53 大小:509KB
下载 相关 举报
第4章 Windows的图形设备接口及Windows绘图.ppt_第1页
第1页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第2页
第2页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第3页
第3页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第4页
第4页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第5页
第5页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第6页
第6页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第7页
第7页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第8页
第8页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第9页
第9页 / 共53页
第4章 Windows的图形设备接口及Windows绘图.ppt_第10页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4章 Windows的图形设备接口及Windows绘图.ppt》由会员分享,可在线阅读,更多相关《第4章 Windows的图形设备接口及Windows绘图.ppt(53页珍藏版)》请在优知文库上搜索。

1、第第4 4章章 WindowsWindows的图形设备接口及的图形设备接口及WindowsWindows绘图绘图 Windows图形设备接口图形设备接口(GDI)是为与)是为与设备无关设备无关的的图形设计的。所谓设备的无关性,就是操作系统屏图形设计的。所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异,因而设备无关性能使用户编蔽了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置。程时无需考虑特殊的硬件设置。Windows支持与设备无关的图形支持与设备无关的图形利用利用GDI和和Windows设设备驱动程序备驱动程序开发人员只要建开发人员只要建立与输出设备的立与输出设备的关联,

2、让系统加关联,让系统加载相应的设备驱载相应的设备驱动程序即可动程序即可一、图形设备接口一、图形设备接口(GDI)GDI负责系统与用户或绘图程序之间的信息交换,并控制在输负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上出设备上显示图形显示图形或或文字文字,是是Windows系统的重要组成部系统的重要组成部分。分。设备描述表设备描述表即为即为设备环境设备环境的属性的集合。的属性的集合。应用程序应用程序与与输出设备输出设备之之间的桥梁间的桥梁Win系统系统外设外设直接访问直接访问不允许不允许统一的设备环境统一的设备环境(DC)提供提供使应用程序与设备相连使应用程序与设备相连用用户户为确保图

3、形输出为确保图形输出的的设备无关性设备无关性1.GDI的一些基本概念的一些基本概念应应用用程程序序设备描设备描述表及述表及其属性其属性通过设备描述表的句柄来间接地存取通过设备描述表的句柄来间接地存取应用程序每一次图形应用程序每一次图形操作均参照设备描述操作均参照设备描述表中的属性执行表中的属性执行图形刷新图形刷新是绘图过程中必须考虑的重要问题是绘图过程中必须考虑的重要问题刷新请求刷新请求对刷新请求的响应对刷新请求的响应刷新方法刷新方法包括(1)刷新请求刷新请求 应用程序在窗口中应用程序在窗口中绘制了一个椭圆,绘制了一个椭圆,颜色列表框覆盖了颜色列表框覆盖了椭圆的一部分椭圆的一部分关闭颜色选框后

4、,关闭颜色选框后,应用程序需要恢应用程序需要恢复被覆盖部分的复被覆盖部分的颜色和形状颜色和形状窗口大小的调整窗口大小的调整窗口移动窗口移动被覆盖后的恢复被覆盖后的恢复(2)系统对刷新请求的响应系统对刷新请求的响应 当用户区的内容需要刷新时,系统向应用程序消当用户区的内容需要刷新时,系统向应用程序消息队列发送息队列发送WM_PAINT消息,系统在应用程序的消消息,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理息队列中加入该消息,以通知窗口函数执行刷新处理三种三种刷新刷新窗口移动后的刷新窗口移动后的刷新被覆盖区域的刷新被覆盖区域的刷新对象穿越后的刷新对象穿越后的刷新(系统自动完成

5、)用户区移动或显示用户区移动或显示用户窗口大小改变用户窗口大小改变程序通过滚动条滚动窗口程序通过滚动条滚动窗口窗口被另一个窗口覆盖的窗口被另一个窗口覆盖的恢复如下拉式菜单关闭等恢复如下拉式菜单关闭等光标穿过用户区光标穿过用户区图标拖过用户区图标拖过用户区窗口被另一个窗口覆盖的区域称为窗口被另一个窗口覆盖的区域称为无效区域无效区域。Windows系统为每个窗口建立了一个系统为每个窗口建立了一个PAINTSTRUCT结构结构,该该结构中包含了包围结构中包含了包围无效区域无效区域的一个最小矩形的结构的一个最小矩形的结构RECT,应用应用程序可以根据这个无效矩形执行刷新操作。程序可以根据这个无效矩形执

6、行刷新操作。Typedef struct tagPAINTSTRUCTTypedef struct tagPAINTSTRUCT HDC hdc HDC hdc;/设备环境句柄设备环境句柄 BOOL fEraseBOOL fErase;/一般取真值,表示擦除无效矩形的背景一般取真值,表示擦除无效矩形的背景 RECT RECT rcPaintrcPaint;/无效矩形标识无效矩形标识 BOOL fRestoreBOOL fRestore;/系统保留系统保留 BOOL fIncUpdateBOOL fIncUpdate;/系统保留系统保留 BYTE rgbReserved16BYTE rgbRes

7、erved16;/系统保留系统保留 PAINTSTRUCT;PAINTSTRUCT;rcPaint 为标准的为标准的RECT数据结构,数据结构,其作用是标识无效矩形,它包含了其作用是标识无效矩形,它包含了无效矩形的左上角和右下角的坐标无效矩形的左上角和右下角的坐标常用的常用的Windows应用应用程序刷新窗口程序刷新窗口的方法的方法保存副本。刷保存副本。刷新时将副本拷新时将副本拷贝到相应的窗贝到相应的窗口中口中记录事件。刷新记录事件。刷新时重新执行这个时重新执行这个曾经发生的事件曾经发生的事件重新绘制。将图形重新绘制。将图形绘制处理程序放在绘制处理程序放在消息消息WM_PAINT响应模块中,刷

8、新响应模块中,刷新时重绘图形时重绘图形(3)有效的刷新方法有效的刷新方法获取设备环境是应用程序输出图形的先决条件,常用的两种方法获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调用函数是调用函数BeginPaint或或GetDC(1)调用调用BeginPaint函数函数 应用程序响应应用程序响应WM_PAINT消息进行图形刷新时,主要通过消息进行图形刷新时,主要通过调用调用BeginPaint函数获取设备环境函数获取设备环境 hdc=BeginPaint(hwnd,&hdc=BeginPaint(hwnd,&psps);/psps为为PAINTSTRUCTPAINTSTRUCT类型结

9、构类型结构定义方式为:定义方式为:PAINTSTRUCT PAINTSTRUCT psps;系统获取设备环境的系统获取设备环境的同时填写同时填写ps结构,以结构,以标识无效矩形区标识无效矩形区由由BeginPaint函数获取的设备环境要用函数获取的设备环境要用EndPaint函数释放函数释放void EndPaint(HWND hwnd,PAINTSTRUCT&ps)3.获取设备环境的方法获取设备环境的方法(2)调用调用GetDC函数函数 如果绘图工作并非由如果绘图工作并非由WM_PAINT消息驱动,则调用消息驱动,则调用GetDC函数获取设备环境。函数获取设备环境。hdc=GetDC(hwn

10、dhdc=GetDC(hwnd););由由GetDC函数获取的设备环境必须用函数获取的设备环境必须用ReleaseDC函数释放函数释放 void ReleaseDC(HWND hwnd);BeginPaint 与与 GetDC 的的区区别别项项目目 函函数数BeginPaint 函函数数GetDc 函函数数使使用用环环境境只只 用用 于于 图图 形形 刷刷 新新 时时 获获取取设设备备环环境境使使用用较较为为广广泛泛操操作作区区域域使使用用 BeginPaint 函函数数获获取取设设备备环环境境后后,操操作作区区域域为为无无效效区区域域使使用用 GetDC 函函数数获获取取设设备备环环境境后后

11、,操操作作区区域域为为整整个个用用户户区区释释 放放 设设 备备 环环境境所所用用函函数数由由 EndPaint 函函数数释释放放由由 ReleaseDC 函函数数释释放放映像模式定义了将逻辑单位转化为设备的度量单位以及映像模式定义了将逻辑单位转化为设备的度量单位以及设备的设备的x方向和方向和y方向,程序员可在一个统一的逻辑坐标系中操方向,程序员可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况。作而不必考虑输出设备的坐标系情况。窗口窗口:对应逻辑坐标系上程序员设定的区域:对应逻辑坐标系上程序员设定的区域视口视口:对应实际输出设备上程序员设定的区域:对应实际输出设备上程序员设定的区域

12、窗口和视口窗口和视口如何映射?如何映射?4.映像模式映像模式映映像像模模式式将将一一个个逻逻辑辑单单位位映映射射为为坐坐标标系系设设定定MM_ANISOTROPIC系系统统确确定定OptionalMM_HIENGLISH0.001英英寸寸Y 上上,X 右右MM_HIMETRIC0.01毫毫米米Y 上上,X 右右MM_ISOTROPIC系系统统确确定定Optional,但但 x轴轴和和 y 轴轴的的单单位位此此例例为为 1:1MM_LOENGLISH0.01英英寸寸Y 上上,X 右右MM_LOMETRIC0.1毫毫米米Y 上上,X 右右MM_TEXT一一个个像像素素Y 下下,X 右右MM_TWI

13、PS1/1440 英英寸寸Y 上上,X 右右默认的映射模式默认的映射模式将窗口中的对称将窗口中的对称图形映射到视口图形映射到视口时仍为对称图形时仍为对称图形按照窗口和视口的按照窗口和视口的坐标比例进行映射坐标比例进行映射坐标坐标系统系统逻辑坐标系统逻辑坐标系统设备坐标系统设备坐标系统屏幕坐标系统屏幕坐标系统窗口坐标系统窗口坐标系统用户区坐标系统用户区坐标系统 应用程序可获取设备环境的当前映像模式,并根据需要设应用程序可获取设备环境的当前映像模式,并根据需要设置映像模式。置映像模式。相关相关函数函数设置设备环境的映像模式设置设备环境的映像模式SetMapMode(hdc,nMapModeSetM

14、apMode(hdc,nMapMode););nMapMode为映像模式的整型标识符为映像模式的整型标识符获取当前设备环境的映像模式获取当前设备环境的映像模式nMapMode=GetMapMode(hdcnMapMode=GetMapMode(hdc););窗口窗口区域的定义由区域的定义由SetWindowExtEx函数完成,其函数原型为函数完成,其函数原型为:BOOL SetWindowExtExBOOL SetWindowExtEx(HDC hdc(HDC hdc,int nHeight,nWidth int nHeight,nWidth,/以以逻辑逻辑单位表示的窗口区域高宽度单位表示的窗

15、口区域高宽度 LPSIZE lpSizeLPSIZE lpSize,/函数调用前窗口区域尺寸的函数调用前窗口区域尺寸的SIZESIZE结构地址结构地址););视口视口区域的定义由区域的定义由SetViewportExtEx函数完成,函数原型为:函数完成,函数原型为:BOOL Set ViewportExtEx ViewportExtEx(HDC hdcHDC hdc,int nHeight,nWidthint nHeight,nWidth,/,/以以物理物理设备单位表示的新视口区域高宽设备单位表示的新视口区域高宽度度LPSIZE lpSizeLPSIZE lpSize);只有在映射模式为只有在

16、映射模式为MM_ANISOTROPIC和和MM_ISOTROPIC时才有意义时才有意义视口视口的默认原点和的默认原点和窗口窗口的默认原点均为(的默认原点均为(0,0)。可通过调用)。可通过调用函数函数SetViewportOrgEx和和SetWindowOrgEx设定窗口与视口的设定窗口与视口的原点。原点。SetWindowOrgEx函数的原型为函数的原型为:BOOL SetWindowOrgExBOOL SetWindowOrgEx(HDC hdcHDC hdc,int X,Yint X,Y,/以以逻辑逻辑单位表示的窗口原点坐标单位表示的窗口原点坐标LPPOINT lpPointLPPOINT lpPoint/函数调用前原点坐标的函数调用前原点坐标的POINTPOINT结构的地址结构的地址););只有在映射模式为只有在映射模式为MM_ANISOTROPIC和和MM_ISOTROPIC时才有意义时才有意义(1)画笔的创建画笔的创建 使用画笔之前必须事先定义一个画笔句柄。形式如下使用画笔之前必须事先定义一个画笔句柄。形式如下:HPEN hP;然后调用函数然后调用函数GetStockObj

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > windows相关

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!