## 1. GDI+的結構與組成
本節先介紹 GDI+的體系結構,再列出 C++封裝的 GDI+ API 的具體組成。
### 1.1 GDI+的結構
GDI+是建立在 GDI 之上的一種高層圖形子系統,基礎是 GDI+平面 API,有 C++和托 管兩種封裝。
注意,雖然 GDI+是 GDI 的發展,但是 GDI+并非設計來替代 GDI 的,它不能獨立工作, 底層還得靠 GDI 實現。
(1)GDI+的體系結構
GDI+與 GDI 一樣,都具有設備無關性。而且 GDI+是建立在 GDI 之上的一種高層接口, 供 Windows API 和.NET 框架調用。與 GDI 類似,GDI+主要提供了二維矢量圖形、圖像處 理和文字顯示版式三類功能(參見圖 14-1),只是 GDI+比 GDI 的功能更強大,且編程模式發生了改變。

圖 14-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++及托管封裝的關系如圖 14-2 所示。

圖 14-2 GDI+的封裝與使用