windows编程技术08GDI编程1-绘图

windows编程技术08GDI编程1-绘图

ID:47162247

大小:564.00 KB

页数:42页

时间:2019-08-14

windows编程技术08GDI编程1-绘图_第1页
windows编程技术08GDI编程1-绘图_第2页
windows编程技术08GDI编程1-绘图_第3页
windows编程技术08GDI编程1-绘图_第4页
windows编程技术08GDI编程1-绘图_第5页
资源描述:

《windows编程技术08GDI编程1-绘图》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第8章GDI编程1-绘图GDI(GraphicsDeviceInterface,图形设备接口)是Windows操作系统的传统图形子系统,负责与设备无关的图形绘制,Win32API为应用程序提供了丰富的绘图函数和功能,MFC对它们进行了C++类封装,参见图8-1。Windows应用程序MFCWin32API执行程序用户界面(User)GDI+图形子系统(GDI)设备驱动程序内核(Kernel)图形驱动程序硬件抽象层(HAL)计算机硬件图8-1GDI与Windows操作系统(其中彩色部分为操作系统)传统GDI是随Windo

2、ws1.0于1985年11月推出的,新式GDI+则是随WindowsXP于2001年10月推出的GDI的改进版,增加了α混色、渐变画刷、样条曲线、矩阵变换、图像处理、持久路径等新功能。随WindowsVista及.NET框架3.0微软于2006年11月又推出了基于DirectX和.NET框架的全新图形子系统WPF(WindowsPresentationFoundation,视窗显示/展现基础),它统一了桌面和浏览器等客户端应用程序的图形界面,采用XAML声明式编程,将用户界面的设计和编程彻底分离开来,是Windows的

3、下一代GUI显示系统。本书从第8章到第11章,将详细讨论如何使用GDI进行传统的Windows图形编程,包括绘图、文字、图像、动画、图标、图元文件和打印等内容。GDI+是建立在GDI之上的,计划在第14和15章中作简单介绍。WPF则是以.NET框架为基础的,准备在第19上和20章中再加以讨论。在MFC应用程序中,绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如:voidCDrawView::OnDraw(CDC*/*pDC*/){CDrawDoc*pDoc=GetDocument();ASSE

4、RT_VALID(pDoc);if(!pDoc)return;42//TODO:在此处为本机数据添加绘制代码}每次需要重绘窗口时(如程序启动、窗口大小改变、全部或部分窗口重现、程序员调用函数RedrawWindow或Invalidate/UpdateWindow),应用程序框架都会调用此CWnd消息响应成员函数(的覆盖)来绘制窗口客户区。在Windows中,绘图一般在框架窗口的客户区(对应于视图类C*View)进行,使用的是封装在MFC的设备上下文(Device-Context,DC)类CDC中的各种绘图函数。在绘图前

5、,一般需先得到客户区大小和CDC对象、设置绘图颜色,然后再根据文档数据或用户操作来绘制各种图形。8.1几何对象的结构和类图8-2GDI几何对象的结构与类为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类,包括点、大小和矩形,其中常用的是点和矩形。这些结构和类被分别定义在头文件windef.h和afxwin.h中。MFC中的几何对象类都是独立的类(不是CObject的派生类),是对API中对应结构的C++封装,参见图8-2。8.1.1点点(point)在API中的结构为POINT,对应的MFC类为CPoi

6、nt。1.点结构POINTAPI中的点数据结构POINT用来表示一点的x、y坐标:typedefstructtagPOINT{LONGx;LONGy;}POINT;其中,类型LONG(32位整数)的定义为:typedeflongLONG;2.点类CPointMFC中的点类CPoint为一个没有基类的独立类,封装了POINT结构,有成员变量x和y,其构造函数有5种:42CPoint();//默认CPoint(intinitX,intinitY);//常用CPoint(POINTinitPt);CPoint(SIZEini

7、tSize);CPoint(LPARAMdwPoint);//低字设为x、高字设为y42CPoint类还定义了4个平移和设置的成员函数:42voidOffset(intxOffset,intyOffset);voidOffset(POINTpoint);voidOffset(SIZEsize);voidSetPoint(intX,intY);42另外,CPoint类还重载了+、-、+=、-=、==、!=等运算符来支持CPoint对象和CPoint、POINT、SIZE对象之间的运算。8.1.2大小大小(size,尺寸)

8、在API中的结构为SIZE,在MFC中的类为CSize。1.大小结构SIZE大小结构SIZE用来表示矩形的宽cx和高cy:typedefstructtagSIZE{LONGcx;LONGcy;}SIZE;2.大小类CSizeMFC中的大小类CSize也为一个没有基类的独立类,封装了SIZE结构,有成员变量cx和cy,其构造函数也有

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

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

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