GDI+ 中的画笔和实心形状

封闭形状(例如矩形或椭圆形)由轮廓和内部组成。 轮廓是用笔绘制的,内部是用画笔填充的。 GDI+ 提供了用于填充封闭形状内部的多个画笔类:SolidBrushHatchBrushTextureBrushLinearGradientBrushPathGradientBrush。 所有这些类都继承自 Brush 类。 下图显示了用纯色画笔填充的一个矩形以及用阴影线画笔填充的一个椭圆形。

Screenshot of a rectangle filled with a solid brush and an ellipse filled with a hatch brush.

纯色画笔

若要填充封闭形状,需要 Graphics 类的实例和 BrushGraphics 类的实例提供 FillRectangleFillEllipse 等方法,Brush 存储填充的特性,例如颜色和图案。 Brush 作为参数之一传递给填充方法。 下面的代码示例演示如何用纯红色填充一个椭圆形。

SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)

注意

在前面的示例中,画笔的类型是继承自 BrushSolidBrush

阴影线画笔

使用阴影线画笔填充形状时,可以指定前景色、背景色和阴影线样式。 前景色是阴影线的颜色。

HatchBrush myHatchBrush =
   new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
   New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)

GDI+ 提供了超过 50 种阴影线样式;下图中显示的三种样式为 HorizontalForwardDiagonalCross

Screenshot of three ellipses that are filled with a horizontal hatch brush, forward diagonal hatch brush, and a cross hatch brush.

纹理画笔

通过纹理画笔,可以使用位图中存储的图案来填充形状。 例如,假设下图存储在名为 MyTexture.bmp 的磁盘文件中。

Screenshot of the My Texture dot b m p file.

下面的代码示例演示如何通过重复存储在 MyTexture.bmp 中的图片来填充椭圆形。

Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)

下图显示了填充的椭圆形。

Screenshot of an ellipse that is filled with a texture brush.

渐变画笔

GDI+ 提供了两种类型的渐变画笔:线性渐变和路径渐变。 可以使用线性渐变画笔用在形状中进行水平、垂直或呈对角移动时逐渐变化的颜色来填充形状。 下面的代码示例演示如何使用一个水平渐变画笔来填充椭圆形,此渐变画笔会在从此椭圆形的左边缘移动到右边缘时从蓝色变为绿色。

LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
   myRectangle,
   Color.Blue,
   Color.Green,
   LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
Dim myLinearGradientBrush As New LinearGradientBrush( _
   myRectangle, _
   Color.Blue, _
   Color.Green, _
   LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)

下图显示了填充的椭圆形。

Screenshot of an ellipse filled with a horizontal gradient brush.

可以将路径渐变画笔配置为在从形状的中心向边缘移动时更改颜色。

Screenshot of an ellipse filled with a path gradient brush.

路径渐变画笔非常灵活。 下图中用于填充三角形的渐变画笔逐渐从中心的红色变为顶点处三种的不同颜色。

Screenshot of a triangle filled with a path gradient brush.

另请参阅