- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GDI编程-绘图课件
第8章 GDI编程1-绘图
详细介绍了GDI绘图,希望对你有帮助:
GDI(Graphics Device Interface,图形设备接口)是Windows操作系统的传统图形子系统,负责与设备无关的图形绘制,Win32 API为应用程序提供了丰富的绘图函数和功能,MFC对它们进行了C++类封装,参见图8-1。
Windows应用程序 MFC Win32 API 执行程序 用户界面(User) GDI+ 图形子系统(GDI) 设备驱动程序 内核(Kernel) 图形驱动程序 硬件抽象层(HAL) 计算机硬件 图8-1 GDI与Windows操作系统(其中彩色部分为操作系统)
传统GDI是随Windows 1.0于1985年11月推出的,新式GDI+则是随Windows XP于2001年10月推出的GDI的改进版,增加了α混色、渐变画刷、样条曲线、矩阵变换、图像处理、持久路径等新功能。随Windows Vista及.NET框架3.0微软于2006年11月又推出了基于DirectX和.NET框架的全新图形子系统WPF(Windows Presentation Foundation,视窗显示/展现基础),它统一了桌面和浏览器等客户端应用程序的图形界面,采用XAML声明式编程,将用户界面的设计和编程彻底分离开来,是Windows的下一代GUI显示系统。
本书从第8章到第11章,将详细讨论如何使用GDI进行传统的Windows图形编程,包括绘图、文字、图像、动画、图标、图元文件和打印等内容。GDI+是建立在GDI之上的,计划在第14和15章中作简单介绍。WPF则是以.NET框架为基础的,准备在第19上和20章中再加以讨论。
在MFC应用程序中,绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如:
void CDrawView::OnDraw(CDC* /*pDC*/) {
CDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
}
RedrawWindow或Invalidate/UpdateWindow),应用程序框架都会调用此CWnd消息响应成员函数(的覆盖)来绘制窗口客户区。
在Windows中,绘图一般在框架窗口的客户区(对应于视图类C*View)进行,使用的是封装在MFC的设备上下文(Device-Context,DC)类CDC中的各种绘图函数。
在绘图前,一般需先得到客户区大小和CDC对象、设置绘图颜色,然后再根据文档数据或用户操作来绘制各种图形。
8.1 几何对象的结构和类
为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类,包括点、大小和矩形,其中常用的是点和矩形。这些结构和类被分别定义在头文件windef.h和afxwin.h中。MFC中的几何对象类都是独立的类(不是CObject的派生类),是对API中对应结构的C++封装,参见图8-2。
8.1.1 点
点(point)在API中的结构为POINT,对应的MFC类为CPoint。
1.点结构POINT
API中的点数据结构POINT用来表示一点的x、y坐标:
typedef struct tagPOINT { LONG x; LONG y; } POINT;
其中,类型LONG(32位整数)的定义为:typedef long LONG;
2.点类CPoint
MFC中的点类CPoint为一个没有基类的独立类,封装了POINT结构,有成员变量x和y,其构造函数有5种:
CPoint( ); // 默认
CPoint( int initX, int initY ); // 常用
CPoint( POINT initPt );
CPoint( SIZE initSize );
CPoint( LPARAM dwPoint ); // 低字设为x、高字设为y
CPoint类还定义了4个平移和设置的成员函数:
void Offset(int xOffset, int yOffset);
void Offset(POINT point);
void Offset(SIZE size);
void SetPoint(int X, int Y);
另外,CPoint类还重载了+、-、+=、-=、==、!= 等运算符来支持CPoint对象和CPoint、POINT、SIZE对象之间的运算。
8.1.2 大小
大小(size,尺寸)在API中的结构为SIZE,在MFC中的类为CSize。
1.大小结构SIZE
大小结构SIZE用来表示矩形的宽cx和高cy:
typede
文档评论(0)