🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 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 的功能更强大,且编程模式发生了改变。 ![](https://box.kancloud.cn/2016-04-18_57144a74143d9.png) 图 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 所示。 ![](https://box.kancloud.cn/2016-04-18_57144a7cae7ef.png) 图 14-2 GDI+的封装与使用