画笔和填充形状

封闭图(如矩形或椭圆)由轮廓和内部组成。 轮廓用 对象绘制,内部填充有 画笔 对象。 Windows GDI+ 提供了多个画笔类来填充封闭图形的内部:SolidBrushHatchBrushTextureBrushLinearGradientBrushPathGradientBrush。 所有这些类都继承自 Brush 类。 下图显示了一个矩形,其中填充了实心画笔,椭圆填充了阴影画笔。

显示蓝色矩形的 插图,以及填充蓝色阴影图案的洋红椭圆

 

实心画笔

若要填充封闭的形状,需要一个 图形 对象和 画笔 对象。 Graphics 对象提供 FillRectangleFillEllipse等方法,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+ 提供 50 多种阴影样式,在 HatchStyle中指定。 下图中显示的三种样式是 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); 

下图显示了填充的椭圆。

显示带渐变填充的省略号的插图 图:左侧右侧为绿色的蓝色

可以将路径渐变画笔配置为在从图形中心移动到边界时更改颜色。

中心深蓝色椭圆的 ilustration,在边缘 底纹到浅蓝色

路径渐变画笔相当灵活。 下图中用于填充三角形的渐变画笔逐渐从中心红色更改为顶点上三种不同颜色中的每一种。

图中红色的三角形,每个顶点