## 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 框架類庫中的類和功能時,也常常將其函數改稱為方法。

圖 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 等。