windows程序gdi绘图

windows程序gdi绘图

ID:21972814

大小:3.04 MB

页数:92页

时间:2018-10-21

windows程序gdi绘图_第1页
windows程序gdi绘图_第2页
windows程序gdi绘图_第3页
windows程序gdi绘图_第4页
windows程序gdi绘图_第5页
资源描述:

《windows程序gdi绘图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用C++语言实现Windows图形输出1、设备场境概念2、使用GDI绘图对象3、使用GDI坐标系统C++程序设计4、使用GDI绘图213.2.7图形输出Windows应用程序不支持标准输出函数(如printf),应用程序输出包括文字在内的所有数据均是以图形方式“绘制”到窗口上的。Windows通过图形设备接口GDI对图形输出进行支持。GDI为应用程序提供了与显示器、打印机等输出设备无关的图形输出接口,使得程序员从各种显示、打印设备的直接处理中解脱出来。313.2.7图形输出GDI由几百个函数和与此相关的数据类型、宏定义和结构体组成。

2、主要有:获取和释放(或创建和删除)设备描述表函数、获取设备信息函数、使用GDI绘图对象函数、绘图函数、设置和获取设备参数函数等,其显示的图形类型(简称图元)有:直线、曲线、填充、位图、文本等。413.2.7图形输出1.设备场境Windows对图形显示设备进行了封装,形成了一个统一的虚拟图形显示设备。应用程序可以在这个虚拟设备上进行绘图,而虚拟设备图形转换为物理设备图形的任务则由设备驱动程序去完成。这个虚拟图形设备用一个包含各种设备属性的数据结构来表示,称为设备场境DC(devicecontent),又称设备上下文。如图所示,设备场境

3、DC是指可以用来输出图形的对象,例如显示器、打印机、某个窗口等等,设备场境句柄HDC是指向某个设备场境的类似指针的数据类型。513.2.7图形输出也就是说,从应用程序的角度来看,设备场境DC就是Windows提供的一个“画板”,程序在其上绘图。当程序员想在一个图形输出设备(例如显示器或者打印机)上绘图时,必须首先获得设备场境句柄,然后以此为参数调用GDI函数绘图。613.2.7图形输出图13.14设备场景DC示意713.2.7图形输出Windows提供了几种获取设备场境句柄的方法。如果在处理一条消息时获取了设备场境句柄,那么应该在退

4、出窗口过程WndProc之前释放它或者删除它。一旦释放了DC句柄,它就不能再使用了。813.2.7图形输出最常用的获取设备场境句柄的方法是在处理WM_PAINT消息时,使用BeginPaint和EndPaint调用:其中ps、hdc定义如下:hdc=BeginPaint(hWnd,&ps);//客户区准备绘图//GDI绘图调用......EndPaint(hWnd,&ps);//客户区绘图结束PAINTSTRUCTps;HDChdc;913.2.7图形输出变量hdc是设备场境句柄类型HDC变量,变量ps是类型PAINTSTRUCT的

5、结构体变量,该结构包含一个名为rcPaint的RECT矩形结构成员,rcPaint定义一个包围窗口客户区无效范围的矩形。使用从BeginPaint获得的DC句柄,只能在这个区域内绘图。只要使用了BeginPaint就必须要用且只能用EndPaint释放DC句柄。1013.2.7图形输出WM_PAINT消息是当窗口客户区域的一部分或全部变为“无效”,以至于必须“刷新”时发生。例如新建窗口、窗口大小的调整、窗口移动、被覆盖部分的恢复都会产生刷新请求。如图所示,窗口A被另一个窗口B覆盖的区域称为“无效”区域,因为当窗口B从覆盖区域移走后,

6、图中阴影部分对于窗口A来说必须要刷新,否则它是窗口B的图形。1113.2.7图形输出图13.15需要重画的无效区域1213.2.7图形输出应用程序还可以在处理非WM_PAINT消息时获取设备场境句柄,例如:hdc=GetDC(hWnd);//hdc得到客户区DC句柄//GDI绘图调用......ReleaseDC(hWnd,hdc);//释放客户区DC句柄1313.2.7图形输出GetDC得到的设备场境句柄是窗口hWnd客户区的句柄。这组调用与BeginPaint和EndPaint的区别是利用从GetDC返回的句柄可以在整个客户区上

7、绘图,然而GetDC不会使客户区中任何区域可能的无效区域变成有效,从显示效果上来看,GetDC的绘图结果将会在下次WM_PAINT消息刷新后“消失”了。1413.2.7图形输出应用程序还可以获取整个窗口的设备场境句柄,例如:GetWindowDC得到的设备场境句柄,除客户区之外,还包括窗口的标题栏、菜单、滚动条和外框。使用GetDC和GetWindowDC得到的设备场境句柄,只能调用ReleaseDC释放。hdc=GetWindowDC(hWnd);//hdc得到窗口DC句柄//GDI绘图调用......ReleaseDC(hWnd

8、,hdc);//释放窗口DC句柄1513.2.7图形输出BeginPaint、GetDC和GetWindowDC获得的设备场境句柄与显示器的窗口是相关的,获取设备场境句柄的另一个更通用的函数是CreateDC,例如:其中lpszDri

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

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

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