## 1.2 GDI+的组成
GDI+的 C++封装,包含了 54 个类、12 个全局函数、(6 类)226 个图像常量、55 种枚 举和 19 种结构。GDI+的.NET 托管封装,则包含了大约 60 个类、50 个枚举和 8 个结构。这 两种封装都是基于 GDI+平面 API 的。本小节只介绍 GDI+的 C++封装,GDI+的托管封装将 在第 18 章的.NET 窗体绘图中有所涉及。
(1)类
GDI+的 C++封装中共有 54 个类,核心类是 Graphics,它是实际绘制直线、曲线、图形、 图像和文本的类。许多其它 GDI+类是与 Graphics 类一起使用的。例如,DrawLine 方法接收 Pen 对象,该对象中存有所要绘制的线条的属性(颜色、宽度、虚线线型等)。FillRectangle 方法可以接收指向 LinearGradientBrush 对象的指针,该对象与 Graphics 对象配合工作来用 一种渐变色填充矩形。Font 和 StringFormat 对象影响 Graphics 对象绘制文本的方式。Matrix 对象存储并操作 Graphics 对象的仿射变换——旋转、缩放和翻转图像。
GDI+还提供了用于组织图形数据的几种结构类(例如 Rect、Point 和 Size)。而且,某 些类的主要作用是结构化数据类型。例如,BitmapData 类是 Bitmap 类的帮助器,PathData 类是 GraphicsPath 类的帮助器。图 14-3 是 GDI+ API 类的层次结构图。
注意:在 GDI+、.NET、C#、Java 和 VB 中,都把类的成员函数称为方法。当我们在
C++中,使用 GDI+和.NET 框架类库中的类和功能时,也常常将其函数改称为方法。
![](https://box.kancloud.cn/2016-04-18_57144a7cd1982.png)
图 14-3 GDI+类的层次结构
(2)全局函数
GDI+命名空间中的全局函数有 12 个,常用的有如下两个(其余的大多数与图像相关):
+ 关闭 GDI+:GdiplusShutdown(清除 GDI+所使用的资源)。
+ 启动 GDI+:GdiplusStartup(初始化 GDI+)。
(3)常量、枚举和结构
GDI+中有 6 类共计 226 个图像常量(都被定义在头文件 GdiplusImaging.h 中),包括图 像 文 件 格式 常 量 11 个( 如 ImageFormatBMP 、 ImageFormatGIF 、 ImageFormatJPEG 、 ImageFormatPNG、ImageFormatTIFF 等)、图像帧维常量 2 个、图像编码器常量 13 个、图
像像素格式常量 14 个、图像特性标志类型 9 个、图像特性标志 217 个。
GDI+定义了 55 种枚举类型,它们都是相关常数的集合。例如:PenType、BrushType、DashStyle、ImageType、LineCap、FillMode、ImageFlags 等。
GDI+ API 中还定义了 19 种结构,用于 GDI+的各种方法调用中。例如:ColorMap、 ColorMatrix、ColorPalette、Gdiplus Abort、GdiplusStartupInput、GdiplusStartupOutput 等。