绘图的基本工具包括Pen和Brush,在GDI+中,可以使用Pen对象和Brush对象呈现图形、文本和图像。Pen类的实例用于绘制线条和空心形状;Brush类派生的任何类的实例用于填充形状或绘制文本。
Pen
可用于绘制句用指定宽度和样式的线条、曲线以及勾勒形状轮廓。Pen类的常用属性如表所示。
属性 | 说明 |
---|---|
Color | 获取或设置通过Pen类的对象绘制的直线的颜色 |
DashStyle | 获取或设置通过Pen类的对象绘制的虚线的样式 |
DashPattern | 获取或设置对自定义虚线的空白区域和长度进行定义的浮点值数组 |
PenType | 只读属性,检索通过Pen类对象绘制的直线的样式 |
StartCap | 获取或设置LineCap枚举值,该值指定了通过Pen对象绘制的直线起点样式 |
EndCap | 获取或设置LineCap枚举值,该值指定了通过Pen对象绘制的直线终点样式 |
使用Pen对象在窗体中画一个红色圆形
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.CreateGraphics();//创建Graphics对象
Pen p = new Pen(Color.Red, 1);//定义红色画笔
g.DrawEllipse(p, 0, 0, 200, 200);//化圆形
g.Dispose();//释放Graphics资源
}
效果展示
Brush
是一个抽象的类,在GDI+中提供5个类,扩展了Brush类并提供了具体的实现方式,如表所示。
类 | 说明 |
---|---|
SolidBrush | 使用纯颜色填充图形 |
TextureBrush | 使用基于光栅的图像填充图形 |
LinearGradientBrush | 使用颜色渐变填充图形 |
PathGradientBrush | 使用渐变色填充图形,渐变方向是从有路径定义的图形边界指向图形的中心 |
HatchBrush | 使用各种图案填充图形 |
1.SolidBrush类
用于定义单色画笔,画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。
例子:使用SolidBrush类填充图形
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.CreateGraphics();//创建Graphics对象
Brush brush = new SolidBrush(Color.Black);//定义黑色的画笔
g.FillEllipse(brush, 200, 0, 200, 200);//填充椭圆
g.Dispose();//释放Graphics资源
}
效果展示
2.Texturebrush类
用于基于光栅的图形来填充
例子:使用图片填充圆形。
private void Form1_Paint(object sender, PaintEventArgs e)
{
string path = @"C:\Users\admin\Desktop\OIP-C.jfif";
Graphics g = this.CreateGraphics();
Bitmap img = new Bitmap(path);//创建Bitmap对象
Brush brush = new TextureBrush(img);//创建Brush对象
g.FillEllipse(brush,400,0,200,200);//使用brush填充图形
brush.Dispose();//释放brush使用的资源
g.Dispose();//释放Graphics使用的资源
}
效果展示
3.LinearGradientBrush类
用于定义线性渐变画笔,可以是双色渐变,也可以是多色渐变。默认情况下,渐变由起始颜色沿着水平方向平均过渡到终止颜色,若要定义多色渐变,需要使用InterpolationColors属性。
例子:使用水平线渐变画笔填充圆形。
private void Form2_Paint(object sender, PaintEventArgs e)
{
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0),//定义起点
new Point(200, 200),//定义终点
Color.FromArgb(255, 0, 0, 255),//起始颜色为蓝色
Color.FromArgb(255, 0, 255, 0)//终止颜色为绿色
);
e.Graphics.FillEllipse(lgb, 0, 0, 200, 200);//填充圆形
}
效果展示
4.PathGradientBrush类
用于自定义用渐变色填充形状,路径是由GraphicsPath对象维护的一系列线条和曲线。
例子:使用PathGradientBrush类填充圆形。
private void Form3_Paint(object sender, PaintEventArgs e)
{
GraphicsPath gp = new GraphicsPath();
gp.AddEllipse(0, 0, 200, 200);//添加一个圆形
PathGradientBrush pgb = new PathGradientBrush(gp);//创建一个画笔
pgb.CenterColor = Color.FromArgb(255, 0, 0, 255);//设置渐变中心颜色
Color[] colors = { Color.FromArgb(255, 0, 255, 255) };//创建颜色数组
pgb.SurroundColors = colors;
e.Graphics.FillEllipse(pgb,0,0,200, 200);//填充圆形
}
效果展示
5.HatchBrush类
阴影图案由两种颜色组成,一种是背景色;另一种是在背景色上形成图案的线条的颜色。可以使用HatchBrush类对象填充阴影图案闭合的形状。
例子:使用HatchBrush类填充圆形
private void Form4_Paint(object sender, PaintEventArgs e)
{
//创建HatchBrush对象
HatchBrush hb = new HatchBrush(HatchStyle.LargeCheckerBoard, Color.Red,Color.Yellow);
e.Graphics.FillEllipse(hb,0,0,200,200);//填充圆形
}
效果显示