首页 > 代码库 > 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+概述