Pen类用于告诉Graphics实例如何绘制线条。Brush类则用于告诉Graphics实例如何填充绘制区域。在绘图时不需要调用这两个类的方法,只需要使用所需的颜色和其他属性构造一个Pen实例或Brush实例,再把它传送给相应的绘图类。
1.Brush
画刷Brush是一个抽象的基类。要实例化Brush对象,应使用派生于Brush类的子类,
System.Drawing.SolidBrush | 定义单色画笔。 画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。 |
System.Drawing.TextureBrush | 这种对象使用图像来填充形状的内部。 |
System.Drawing.Drawing2D.HatchBrush | 用阴影样式、前景色和背景色定义矩形画笔。 |
System.Drawing.Drawing2D.LinearGradientBrush | 使用线性渐变封装 Brush。 |
System.Drawing.Drawing2D.PathGradientBrush | 封装 Brush 对象,它通过渐变填充 GraphicsPath 对象的内部。 |
2 Pen
Pen类表示画笔,用于绘制一个线条。在使用Pen类时,需要指定线条的宽度(像素),对于一条比较宽的线段,还要确定如何填充该线条中的区域。粗线条中的区域可以用纯色填充,或者使用画刷Brush填充。也就是说,Pen实例可以包含Brush实例的引用。这是非常有用的,因为这表示可以绘制有影线填充或线性阴影的线条。
构造函数
Pen(Brush) | |
Pen(Brush, Single) | |
Pen(Color) | 用指定颜色初始化 Pen 类的新实例。 |
Pen(Color, Single) |
3 绘制图形和线条
System.Drawing.Graphics类提供了很多方法,利用这些方法可以绘制各种线条、空心图形和实心图形。
Imports System.Drawing
Imports System.Drawing.Drawing2D
示例:
(1)创建一个Windows窗体应用程序UsingBrushAndPen.
(2)为了使用新画笔,需指定导人命名空间System.Drawing.Drawing2D:
Imports System.Drawing
Imports System.Drawing.Drawing2D
(3)为窗体Forml类添加一些额外属性,其中包含了要绘制图形的位置信息,以及要使用的各种画刷和画笔:
Private rectangleBounds As Rectangle = New Rectangle(New Point(10, 10), New Size(20, 120))
Private ellipseBounds As Rectangle = New Rectangle(New Point(50, 10), New Size(20, 150))
Private bluePen As Pen = New Pen(Brushes.Blue, 3)
Private solidYellowBrush As Brush = New SolidBrush(Color.Yellow)
Private linearGradientBrush As Brush = New LinearGradientBrush(ellipseBounds, Color.Blue, Color.Wheat, 45)
4)为窗体类添加Print事件处理程序。
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim dc As Graphics = e.Graphics
dc.FillRectangle(Brushes.White, ClientRectangle)
dc.FillRectangle(solidYellowBrush, rectangleBounds)
dc.FillRectangle(linearGradientBrush, ellipseBounds)
dc.FillEllipse(Brushes.Beige, New Rectangle(80, 20, 50, 30))
dc.FillPie(Brushes.BurlyWood, New Rectangle(80, 60, 50, 50), 90, 120)
dc.DrawLine(bluePen, ClientRectangle.Location, ClientRectangle.Location + ClientRectangle.Size)
End Sub