系统编程课件教学作者2 第四章 WindowsGDI(2).ppt

系统编程课件教学作者2 第四章 WindowsGDI(2).ppt

ID:51626451

大小:739.00 KB

页数:40页

时间:2020-03-26

系统编程课件教学作者2 第四章 WindowsGDI(2).ppt_第1页
系统编程课件教学作者2 第四章 WindowsGDI(2).ppt_第2页
系统编程课件教学作者2 第四章 WindowsGDI(2).ppt_第3页
系统编程课件教学作者2 第四章 WindowsGDI(2).ppt_第4页
系统编程课件教学作者2 第四章 WindowsGDI(2).ppt_第5页
资源描述:

《系统编程课件教学作者2 第四章 WindowsGDI(2).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Windows图形设备接口(GDI):应用程序不直接操作硬件,由GDI为应用程序提供相关接口,实现对图形设备的操作;这是由于操作系统屏蔽了硬件设备(显示器或打印机等)的差异,用户编程时无需考虑特殊的硬件设置。因此,图形设备接口(GDI)所起如下作用:GDI负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字,是Windows系统的重要组成部分。图形设备接口GDIWindows操作系统支持与设备无关的图形利用GDI和Windows设备驱动程序1GDI的一些基本概念Win系统外设不可能允许用

2、户统一的设备环境(DC)提供使应用程序与设备相连设备环境(DeviceContext,DC):是一种对象,设定了图形输出的特性与属性,即定义了GDI函数在设备特定区域的工作方式。直接访问2使用GDI的基本模式使用DC来关联(代表)输出设备或其上的一块区域、图形对象及图形模式,用户可以向该设施输出各种样式的文字或图形:获取DC所关联(代表)的对象句柄;(创建)以此句柄为参数调用适当GDI函数获得关联的对象;(选择---有时略去这一步)以此句柄为参数调用适当GDI函数实现相应图形或文字输出。(使用)3窗口被另一

3、个窗口覆盖的区域称为无效区域:系统为每个窗口建立了一个PAINTSTRUCT结构,该结构中包含了包围无效区域的一个最小矩形的结构RECT(见下页)及其他有关刷新窗口所需信息,应用程序根据RECT定义的矩形执行刷新操作。我们可以通过这一结构来获取设备环境中的区域。TypedefstructtagPAINTSTRUCT{HDChdc;//设备环境句柄BOOLfErase;//一般取真值,表示指定背景是否必须删除RECTrcPaint;//无效矩形标识BOOLfRestore;//系统保留BOOLfIncUpda

4、te;//系统保留BYTErgbReserved[16];//系统保留}PAINTSTRUCT;rcPaint为标准的RECT数据结构,其作用是标识无效矩形,它包含了无效矩形的左上角和右下角的坐标设备环境区域4注:程序中设置lpRect=NULL表示整个客户区指定(无效)区域结构RECTtypedefstruct_RECT{LONGleft;//左上角X坐标LONGtop;//左上角Y坐标LONGright;//左下角X坐标LONGbottom;//左下角Y坐标}RECT*PRECT;5获取设备环境是应用程

5、序输出图形的先决条件,常用的方法是调用函数BeginPaint、GetWindowDC和GetDC。调用BeginPaint函数应用程序响应WM_PAINT消息进行图形刷新时,主要通过调用BeginPaint函数获取设备环境hdc=BeginPaint(hwnd,&ps);//ps为PAINTSTRUCT类型结构定义方式为:PAINTSTRUCTps;由BeginPaint函数获取的设备环境要用EndPaint函数释放voidEndPaint(HWNDhwnd,PAINTSTRUCT&ps)获取设备环境的方

6、法6获取设备环境的方法调用BeginPaint函数举例:caseWM_PAINT://窗口客户区需重画{charszText[]=“大家好”;HDChdc;PAINTSTRUCTps;//使无效的客户区变得有效,并取得设备环境句柄hdc=::BeginPaint(hwnd,&ps);//显示文字::TextOut(hdc,10,10,szText,strlen(szText));::EndPaint(hwnd,&ps);return0;}在客户区绘制文本7获取设备环境的方法获取环境设备句柄对应整个窗口,可以

7、在整个窗口(任意位置)绘制文本,函数为GetWindowDC在客户区单击鼠标左键如下程序获得下图结果caseWM_LBUTTONDOWN:{charszText[]=“大家好”;//并取得整个窗口设备环境句柄HDChdc=::GetWindowDC(hwnd);::TextOut(hdc,10,10,szText,strlen(szText));//释放设备环境句柄ReleaseDC(hwnd,hdc);return0;}在任意区域绘制文本8调用GetDC函数由GetDC函数获取的设备环境必须用Releas

8、eDC函数释放voidReleaseDC(HWNDhwnd);如果绘图工作并非由WM_PAINT消息驱动,则调用GetDC函数获取设备环境。hdc=GetDC(hwnd);非WM_PAINT驱动时,GetDC和GetWindowDC分别获取客户区和整个窗口来输出文本,WM_PAINT驱动时,使用BeginPaint可获得客户区(或无效区RECT)来输出文本。9调用GetDC函数举例//UseDC.cpp文件#in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。