12GDI+基础编程摘要.doc

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12GDI基础编程摘要

第12章 GDI+基础编程 GDI+(Graphics Device Interface Plus,图形设备接口加)是Windows XP及以上版本操作系统的图形子系统,也是传统.NET框架的重要组成部分和窗体绘图的主要工具,负责在屏幕和打印机上绘制图形与图像并显示文本信息。顾名思义,GDI+是Windows传统图形设备接口GDI的后续版本,是建立在GDI之上的一个高层图形子系统。 GDI+是一种API,分别通过一套C++类和一套部署为托管代码的类来展现,这两套类分别被称为GDI+的“C++封装”和“托管类接口”。 GDI+不但在功能上比GDI要强大很多,而且在代码编写方面也更简单,因此会成为Windows图形图像程序开发的主要工具之一。由于篇幅所限,本书只简单介绍利用MFC进行GDI+编程的一些基本内容,不讲GDI+的API编程。基于GDI+托管封装的.NET窗体绘图,将在后面的第18章中介绍。对GDI+编程有兴趣的读者,还可以参考如下两本图书: 周鸣杨、赵景亮. 精通GDI+编程. 清华大学出版社,2004年2月(C++ / MFC)。 Mahesh Chand(韩江等译). GDI+图形程序设计. 电子工业出版社,2005年3月(C# / .NET)。 本章将介绍GDI+的结构和组成,讨论GDI+的几个主要新增特性与功能,说明GDI+给Windows图形图像程序的开发模式带来的变化。介绍C++封装的GDI+ API的具体使用方法,主要讲解二维矢量图形绘制和文字显示等基本内容。 GDI+的路径、区域、变换、图像处理和图元文件等高级编程内容,安排在下一章介绍。 12.1 GDI+的结构与组成 本节先介绍GDI+的体系结构,再列出C++封装的GDI+ API的具体组成。 12.1.1 GDI+的结构 GDI+是建立在GDI之上的一种高层图形子系统,基础是GDI+平面API,有C++和托管两种封装。 注意,虽然GDI+是GDI的发展,但是GDI+并非设计来替代GDI的,它不能独立工作,底层还得靠GDI来实现。 1.GDI+的体系结构 GDI+与GDI一样,都具有设备无关性。而且GDI+是建立在GDI之上的一种高层接口,供Windows API和.NET框架调用。与GDI类似,GDI+主要提供了二维矢量图形、图像处理和文字显示版式三类功能(参见图12-1),只是GDI+比GDI的功能更强大,且编程模式发生了很大改变。 图12-1 GDI+的体系结构 2.GDI+平面API与封装 GDI+提供(expose)了一个平面(flat)API,它包含大约600个函数,被实现在Gdiplus.dll中,声明在Gdiplusflat.h内。这些函数被封装进了GDI+ API的54个C++类的集合之中。 作为C++封装的替代方案,微软.NET框架提供了GDI+的一个托管代码封装类集,包含大约60个类、50个枚举和8个结构。它们分属于下列命名空间:System.Drawing、System.Drawing.Drawing2D、System.Drawing.Imaging、System.Drawing.Text和System. Drawing.Printing。 GDI+的平面API与其C++及托管封装的关系如图12-2所示。 12.1.2 GDI+的组成 GDI+的C++封装,包含了54个类、12个全局函数、(6类)226个图像常量、55种枚举和19种结构。GDI+的.NET托管封装,则包含了大约60个类、50个枚举和8个结构。这两种封装都是基于GDI+平面API的。本小节只介绍GDI+的C++封装,GDI+的托管封装将在第18章的.NET窗体绘图中有所涉及。 图12-2 GDI+的封装与使用 1.类 GDI+的C++封装中共有54个类,核心类是Graphics,它是实际绘制直线、曲线、图形、图像和文本的类。许多其它GDI+类是与Graphics类一起使用的。例如,Graphics类的DrawLine方法接收Pen对象,该对象中存有所要绘制的线条的属性(颜色、宽度、虚线线型等)。Graphics类的FillRectangle方法可以接收指向LinearGradientBrush对象的指针,该对象与Graphics对象配合工作来用一种渐变色填充矩形。Font和StringFormat对象影响Graphics对象绘制文本的方式。Matrix对象存储并操作Graphics对象的仿射变换——旋转、缩放和翻转图像。 GDI+还提供了用于组织图形数据的几种结构类(例如Rect、Point和Size)。而且,某些类的主要作用是结构化数据类型。例如,BitmapData类是Bitmap类的帮助器,PathData类是GraphicsPath类的帮助器

文档评论(0)

586334000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档