首页 > 代码库 > GDI+概述
GDI+概述
Windows GDI+是 Windows XP 或者 Windows Server 2003操作系统的 负责显示屏幕信息和打印操作的子系统。 GDI+是一组采用C++类封装的 API。
GDI+可分为三部分:
<1> 2-D vector graphics (2D矢量图形), 这部分主要涉及画一些基本图形,如线,曲线,图表等。 基本图形是通过在屏幕坐标中通过一系列点组成的。
<2> Imaging(图片),有些图片使用矢量绘图会很困难, 因此GDI+的一些类用于绘制这些图片,这些类将图片作为位图来存储
<3>字体, 字体主要关注于这么显示各种不同的尺寸,风格的字体。
GDI+基于类的接口的结构
Windows GDI+基于 C++类的接口,包括大约40个类,50个枚举,6个结构。 也有一些函数不属于任何类。
在使用任何GDI+函数时,必须指定命名空间: Gdiplus ;
using namespace Gdiplus;
不属于任何类的函数,其中两个是:
Status GdiplusStartup( __out ULONG_PTR token *token, __in const GdiplugsStartupInput *input, __out GdiplusStartupOutput *output); void GdiplusShutdown(__in ULONG_PTR token);
GdiplusStartup()函数必须在任何GDI+函数被调用之前调用, 而在用完GDI+后,必须调用 GdiplusShutdown()函数。
GDI+的新功能:
GDI+与 GDI的不同点表现在两个方面。
一,GDI+通过提供新功能来扩展GDI, 如 gradient brushes(渐变画刷) 和 alpha blending(alpha混合,透明度)等新特性。
二,GDI+使得图形编程模型变得更容易和灵活。
新功能列举:
1. Gradient Brushes(渐变画刷), GDI+提供线性渐变和路径渐变画刷来填充封闭形状,路径 和 区域。
2. Cardinal Splines, 是由一些列单独的曲线 组合成一个大曲线。
3. Independent Path Objects , 在GDI中,一个路径属于一个设备环境,当路径被画了之后,路径也被销毁了。而在GDI+中,你可以创建和维护多个 GraphicsPath对象,这些对象是与Graphics对象分离的。而一个GraphicsPath被绘制时,它不会被销毁,所以你可多次使用同一个 GraphicsPath对象。
4. Transformations and the matrix object, 转换 和 矩阵对象。 GDI+提供了Matrix对象,这对于转换(旋转,变换等)是一个强大的工具。
5. Scalable Regions , GDI+对 GDI支持的 region 做了极大的扩展。 在GDI中, region被存储在设备坐标中,并且唯一能用的transformation 就是 translation 。 GDI+将 region存储在 世界坐标系中,并且允许 region做任何能够存储在 Matrix中的任何 transformation。 如缩放,旋转 和 translate 等。
5. Alpha Blending , alpha blending允许你指定要填充颜色的透明度。 一个透明的颜色会与背景色混合,透明度愈高,那背景色将越突出。
6. Support for multiple Image Formats, 支持多种图片格式。 GDI+提供了 Image , Bitmap , Metafile 类,使得你能够加载,保存和操作多种格式的图片,以下图片格式被支持:
BMP, GIF , JPEG , Exif , PNG , TIFF , ICON , WMF , EMF .
GDI+ 与 GDI 编程模型的不同
GDI+概述