新功能

以下部分介绍 Windows GDI+ 中的一些新功能。

渐变画笔

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

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

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

类似于无限符号的形状的插图,从蓝色填充,其中两半相遇在边缘水

基数样条

GDI+ 支持 GDI 不支持的基数样条。 基数样条是一连串连接起来形成较大曲线的单独的曲线。 样条由一个点数组指定,并经过该数组中的每个点。 基数样条 (没有尖角) 穿过数组中的每个点,因此比连接直线创建的路径更精细。 下图显示了两条路径,一条通过连接直线创建,一条作为基线样条创建。

插图显示相同的五个点两次:一次由基线样条连接,另一个按线段连接

独立路径对象

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

转换和矩阵对象

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

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

可缩放区域

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

插图显示形状以坐标轴为中心,然后相同形状,但较大、旋转和向右转换

Alpha 混合

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

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

支持多种图像格式

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

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