GDI+ 中的画笔和实心形状
闭合的形状(例如,矩形或椭圆)由轮廓和内部组成。 使用钢笔绘制出轮廓,并用画笔填充其内部。 GDI+ 提供了几种填充闭合形状内部的画笔类:SolidBrush、HatchBrush、TextureBrush、LinearGradientBrush 和 PathGradientBrush。 所有这些类都是从 Brush 类继承的。 下面的插图显示了用实心画笔填充的矩形和用阴影画笔填充的椭圆。
实心画笔
若要填充闭合的形状,需要 Graphics 类的实例和 Brush。 Graphics 类的实例提供方法,如 FillRectangle 和 FillEllipse,而 Brush 存储填充的特性,如颜色和模式。 Brush 作为参数之一传递给填充方法。 下面的代码示例演示如何用纯红色填充椭圆。
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)
SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
提示
在前面的示例中,画笔为 SolidBrush 类型,该类型从 Brush 继承。
阴影画笔
用阴影画笔填充图形时,要指定前景色、背景色和阴影样式。 前景色是阴影的颜色。
Dim myHatchBrush As _
New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)
HatchBrush myHatchBrush =
new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
GDI+ 提供 50 多种阴影样式;在下面的插图中显示的三种样式为:Horizontal、ForwardDiagonal 和 Cross。
纹理画笔
有了纹理画笔,您就可以用位图中存储的图案来填充图形。 例如,假定下面的图片存储在名为 MyTexture.bmp 的磁盘文件中。
下面的代码示例演示了如何通过重复存储在 MyTexture.bmp 中的图片来填充椭圆。
Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)
Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
下面的插图显示已填充的椭圆。
渐变画笔
GDI+ 提供两种渐变画笔:线性和路径。 您可以使用线性渐变画笔来用颜色(在您横向、纵向或斜向移过图形时会逐渐变化的颜色)填充图形。 下面的代码示例演示如何用水平渐变画笔填充一个椭圆,当从椭圆的左边缘向右边缘移动时,画笔颜色会由蓝变为绿。
Dim myLinearGradientBrush As New LinearGradientBrush( _
myRectangle, _
Color.Blue, _
Color.Green, _
LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
myRectangle,
Color.Blue,
Color.Green,
LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
下面的插图显示已填充的椭圆。
路径渐变画笔可配置为当您从图形中心向边缘移动时颜色随之改变。
路径渐变画笔非常灵活。 用于填充下面插图中三角形的渐变画笔,颜色从中心由红色开始到顶点逐渐变为三种不同的颜色。
请参见
任务
参考
System.Drawing.Drawing2D.HatchBrush
System.Drawing.Drawing2D.LinearGradientBrush