新功能

以下部分介绍 Windows GDI+中的多项新功能。

渐变画笔

GDI+ 通过提供用于填充形状、路径和区域的线性渐变和路径渐变画笔,在 Windows 图形设备界面(GDI)上扩展。 渐变画笔还可用于绘制线条、曲线和路径。 使用线性渐变画笔填充形状时,在形状之间移动时,颜色会逐渐改变。 例如,假设通过指定形状左边缘的蓝色和右边缘的绿色来创建水平渐变画笔。 使用水平渐变画笔填充该形状时,从左边缘移动到右边缘时,该形状将逐渐从蓝色更改为绿色。 同样,当从上到下移动时,填充垂直渐变画笔的形状将改变颜色。 下图显示了一个椭圆,其中填充了水平渐变画笔,以及填充了对角渐变画笔的区域。

由水平渐变填充的形状的插图,由对角渐变

使用路径渐变画笔填充形状时,可以使用各种选项来指定颜色在从形状的一部分移动到另一部分时的变化方式。 一个选项是具有中心颜色和边界颜色,以便在从形状中间向外边缘移动时,像素逐渐从一种颜色更改为另一种颜色。 下图显示了用路径渐变画笔填充的路径(由一对贝塞尔样条创建)。

一个形状的插图,类似于无穷大标志,从蓝色填充,其中半部分与水在边缘相遇

基数样条

GDI+ 支持 GDI 中不支持的基数样条。 基数样条是联接成较大曲线的单个曲线序列。 样条由一组点指定,并遍历该数组中的每个点。 基数样条通过数组中的每个点顺利(无尖角),因此比连接直线创建的路径更精细。 下图显示了两个路径,一个是连接直线创建的,一个是作为基线样条创建的。

图显示同一五点两次:一旦通过基线线连接,另一个按线段

独立路径对象

在 GDI 中,路径属于设备上下文,路径在绘制时被销毁。 使用 GDI+,绘图由 图形 对象执行,你可以创建和维护多个独立于 Graphics 对象的 GraphicsPath 对象。 绘图作不会销毁 GraphicsPath 对象,因此可以使用同一个 GraphicsPath 对象多次绘制路径。

转换和 Matrix 对象

GDI+ 提供了 矩阵 对象,这是一种功能强大的工具,使转换(旋转、翻译等)变得轻松灵活。 矩阵对象与转换的对象结合使用。 例如,GraphicsPath 对象具有 GraphicsPath::Transform 方法,该方法接收 Matrix 对象的地址作为参数。 单个 3×3 矩阵可以存储一个转换或一系列转换。 下图显示了两个转换序列前后的路径(第一次缩放,然后旋转)。

显示形状轮廓的 插图,然后显示形状的轮廓,但更窄且旋转

可缩放区域

GDI+ 在 GDI 上大大扩展,支持区域。 在 GDI 中,区域存储在设备坐标中,唯一可应用于区域的转换是转换。 GDI+ 将区域存储在世界坐标中,并允许区域进行任何转换(例如缩放),这些转换可以存储在转换矩阵中。 下图显示了三个转换序列前后的区域:缩放、旋转和转换。

插图,显示以坐标轴为中心的形状,然后是同一个形状,但更大、旋转并转换为右侧

Alpha 混合

请注意,在上图中,可以通过转换的区域(填充有阴影画笔)查看未转换的区域(填充红色)。 这可以通过 GDI+ 支持的 alpha 混合实现。 使用 alpha 混合,可以指定填充颜色的透明度。 透明颜色与背景色混合 - 填充颜色越透明,背景越显示。 下图显示了四个省略号,这些省略号填充了不同透明度级别的相同颜色(红色)。

图显示了四个不同透明度的省略号重叠半透明矩形

支持多种图像格式

GDI+ 提供 图像位图,以及 图元文件 类,使你可以以各种格式加载、保存和作图像。 支持以下格式:

  • BMP
  • 图形交换格式 (GIF)
  • JPEG
  • Exif
  • PNG
  • TIFF
  • 图标
  • WMF
  • EMF