画笔和填充形状
封闭的图形(如矩形或椭圆形)由轮廓和内部组成。 轮廓是用 笔 对象绘制的,内部用 Brush 对象填充。 Windows GDI+ 提供了多个用于填充闭合图形内部的画笔类: SolidBrush、 HatchBrush、 TextureBrush、 LinearGradientBrush 和 PathGradientBrush。 所有这些类都继承自 Brush 类。 下图显示了用纯色画笔填充的一个矩形以及用阴影线画笔填充的一个椭圆形。
纯色画笔
若要填充闭合的形状,需要一个 Graphics 对象和一个 Brush 对象。 Graphics 对象提供 FillRectangle 和 FillEllipse 等方法,Brush 对象存储填充的属性,如颜色和图案。 Brush 对象的地址作为参数之一传递给填充方法。 以下示例用纯红色填充椭圆。
SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);
请注意,在前面的示例中,画笔的类型为 SolidBrush,它继承自 Brush。
阴影线画笔
使用阴影线画笔填充形状时,可以指定前景色、背景色和阴影线样式。 前景色是阴影线的颜色。
HatchBrush myHatchBrush(
HatchStyleVertical,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0));
GDI+ 提供了在 HatchStyle 中指定的 50 多种阴影样式。 下图中显示的三种样式是 Horizontal、ForwardDiagonal 和 Cross。
纹理画笔
通过纹理画笔,可以使用位图中存储的图案来填充形状。 例如,假设下图存储在名为 MyTexture.bmp 的磁盘文件中。
以下示例通过重复存储在 MyTexture.bmp 中的图片来填充椭圆形。
Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);
下图显示了填充的椭圆形。
渐变画笔
可以使用渐变画笔用颜色填充形状,该颜色从形状的一部分逐渐变为另一部分。 例如,水平渐变画笔将在你从图形左侧移动到右侧时更改颜色。 以下示例用水平渐变画笔填充椭圆形,该画笔从椭圆的左侧移动到右侧时,该画笔从蓝色变为绿色。
LinearGradientBrush myLinearGradientBrush(
myRect,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0),
LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect);
下图显示了填充的椭圆形。
可以将路径渐变画笔配置为在从图形中心向边界移动时更改颜色。
路径渐变画笔非常灵活。 下图中用于填充三角形的渐变画笔逐渐从中心的红色变为顶点处三种的不同颜色。