GDI+ 中的画笔和填充形状
封闭形状(如矩形或椭圆)由轮廓和内部组成。 轮廓用笔绘制,内部用画笔填充。 GDI+ 提供了用于填充封闭形状内部的多个画笔类:SolidBrush、HatchBrush、TextureBrush、LinearGradientBrush 和 PathGradientBrush。 所有这些类都继承自 Brush 类。 下图显示了用纯色画笔填充的一个矩形以及用阴影线画笔填充的一个椭圆形。
纯色画笔
若要填充封闭形状,需要 Graphics 类的实例和 Brush。 Graphics 类的实例提供 FillRectangle 和 FillEllipse等方法,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)
说明
在前面的示例中,画笔的类型为 SolidBrush,继承自 Brush。
阴影线画笔
使用阴影线画笔填充形状时,可以指定前景色、背景色和阴影线样式。 前景色是阴影线的颜色。
HatchBrush myHatchBrush =
new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)
GDI+ 提供了超过 50 种阴影线样式;下图中显示的三种样式为 Horizontal、ForwardDiagonal 和 Cross。
纹理画笔
使用纹理画笔,可以使用位图中存储的图案填充形状。 例如,假设下图存储在名为 MyTexture.bmp
的磁盘文件中。
下面的代码示例演示如何通过重复存储在 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)
下图显示了填充的椭圆。
渐变画笔
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)
下图显示了填充的椭圆。
可以将路径渐变画笔配置为在从形状中心向边缘移动时更改颜色。
路径渐变画笔非常灵活。 下图中用于填充三角形的渐变画笔逐渐从中心红色更改为顶点上三种不同颜色中的每一种。