C#Graphics绘图(及Color、Pen、Brush)
⽬录
1 与继承
类是GDI+技术的⼀个基本类。GDI+(GDI+是GDI[Graphics Device Interface]的改进)是框架的重要组成部分,提供对⼆维图形图像和⽂字排版处理的⽀持。实利
命名空间:
继承:→→Graphics
2 Color、Pen、Brush
2.1 Color
Color Struct表⽰⼀种ARGB颜⾊(alpha、红、绿、蓝)。Color结构通过表态属性公开了140个命名颜⾊。
常⽤属性及⽅法
(1)通过属性返回预先创建的Color对象
Color cl = Color.Red;
(2)创建Color实例的参数为 a,r,g,b;
Color cl = Color.FromArgb(100,200,200,200); //第1个参数为透明度(alpha)参数,其后为红,绿和蓝.
(3)创建Color实例的参数为 r,g,b; //参数为红,绿,蓝三种原⾊,透明度为默认,即完全不透明.
Color cl = Color.FromArgb(200,200,200);
(4)从⼀个现在的Color对象创建⼀个新的Color实例,只修改透明度成份
Color cl = Color.FromArgb(100,Color.PowderBlue);
(5)⽤⼀个形式为AARRGGBB的组合整数创建⼀个Color实例
Color cl = Color.FromArgb(0x64C8C8FF);
(6)调⽤静态FromKnownColor⽅法来创建Color对象
Color cl = Color.FromKnownColor(KnownColor.PowderBlue); //KnownColor枚举值作为参数.
pau什么意思(7)调⽤静态FromName⽅法
Color cl = Color.FromName("PowderBlue"); //字符串参数必须包含⼀个KnownColor枚举值的名称.
其他属性
(1)IsNamedColor Boolean值,如果颜⾊值在这140个命名颜⾊中时,值为true,否则为fal.
(2)IsKnownColor Boolean值,如果颜⾊值是KnownColors枚举的颜⾊之⼀时,值为true.
(3)IsSystemColor Boolean值,如果颜⾊值是SystemColors类的属性值之⼀时,值为true.
颜⾊对照表
点击链接查看颜⾊对照表:
2.2 Pen
画笔,定义⽤于绘制直线和曲线的对象。
若者
构造函数
(1)Pen pen1 = new ; //参数为颜⾊Color 宽度默认为1;
Pen pen2 = new ; //参数为颜⾊Color,单精度浮点数Sigle;
(2) Pen pen3 = ; // 使⽤指定的 初始化 类的新实例。
Pen pen4 = ; // 使⽤指定的 和 初始化 类的新实例。
属性
获取或设置此 的对齐⽅式。
获取或设置 ,⽤于确定此 的特性。
获取或设置此 的颜⾊。
获取或设置⽤于指定复合钢笔的值数组。 复合钢笔绘制由平⾏直线和空⽩区域组成的复合直线。
获取或设置要在通过此 绘制的直线终点使⽤的⾃定义线帽。
获取或设置要在通过此 绘制的直线起点使⽤的⾃定义线帽。
获取或设置⽤在短划线终点的线帽样式,这些短划线构成通过此 绘制的虚线。
获取或设置直线的起点到短划线图案起始处的距离。
获取或设置⾃定义的短划线和空⽩区域的数组。
获取或设置⽤于通过此 绘制的虚线的样式。
获取或设置要在通过此 绘制的直线终点使⽤的线帽样式。
获取或设置通过此 绘制的两条连续直线的端点的联接样式。
获取或设置斜接⾓上联接宽度的限制。
weatherreport
获取⽤此 绘制的直线的样式。
获取或设置在通过此 绘制的直线起点使⽤的线帽样式。
获取或设置此 的⼏何转换的副本。
2.3 Brush
画刷:定义⽤于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。
参考代码:
结果如下:
⼏种画刷对⽐
3 ⽰例
3.1 画线
画实线和虚线的代码如下:
1
private void Form1_Paint(object nder, PaintEventArgs e)2
{3
// (实⼼刷)4
Rectangle myrect1 = new Rectangle(20, 80, 250, 100);5
SolidBrush mysbrush1 = new SolidBrush(Color.DarkOrchid); 6
SolidBrush mysbrush2 = new SolidBrush(Color.Aquamarine); 7
SolidBrush mysbrush3 = new SolidBrush(Color.DarkOrange);8
9
//(梯度刷)10
LinearGradientBrush mylbrush5 = new LinearGradientBrush(rect1,11
Color.DarkOrange, Color.Aquamarine,12
LinearGradientMode.BackwardDiagonal);13
14
//(阴影刷)15
HatchBrush myhbrush5 = new HatchBrush(HatchStyle.DiagonalCross,16
Color.DarkOrange, Color.Aquamarine);17
HatchBrush myhbrush2 = new HatchBrush(HatchStyle.DarkVertical,18
reward是什么意思
Color.DarkOrange, Color.Aquamarine);19
HatchBrush myhbrush3 = new HatchBrush(HatchStyle.LargeConfetti,20
Color.DarkOrange, Color.Aquamarine);21
22
//(纹理刷)23
TextureBrush textureBrush = new TextureBrush(new Bitmap(@"e:/123.jpg"));24
e.Graphics.FillRectangle(mysbrush1, rect1); // (实⼼刷)25
e.Graphics.FillRectangle(mylbrush1, rect1); //(梯度刷)26
27
e.Graphics.FillRectangle(myhbrush1, rect1); //(阴影刷) 28
e.Graphics.FillRectangle(mytextureBrush, rect1); //(纹理刷)29}
效果如下:
画线
3.2 画矩形
填充矩形:g.FillRectangle(brush, rect);
不填充矩形:g.DrawRectangle(pen, rect);大侦探皮卡丘百度云
代码如下:
1
private void button1_Click(object nder, EventArgs e)2
{3
//画实线4
Pen pen = new Pen(Color.Red, 3); 5
//确定线的⾸位位置6
Point point1 = new Point(10, 50);7
Point point2 = new Point(250, 50);8
Graphics g = this.CreateGraphics();9
g.DrawLine(pen, point1, point2);10
}11
12
private void button2_Click(object nder, EventArgs e)13
{14
//画虚线15
Pen pen = new Pen(Color.Red, 3);16
//⾃定义虚线样式17
pen.DashStyle = DashStyle.Custom;18
pen.DashPattern = new float[] { 2, 2 };19
20
//确定线的⾸位位置21
中山大学新华学院
Point point1 = new Point(10, 80);22
Point point2 = new Point(250, 80);23
生命无法承受之轻Graphics g = this.CreateGraphics();24 g.DrawLine(pen, point1, point2);25}
1
private void button1_Click(object nder, EventArgs e)2
{3
//画矩形4
Pen pen = new Pen(Color.YellowGreen);5
SolidBrush brush = new SolidBrush(Color.YellowGreen);6
7
Graphics g = this.CreateGraphics();8
you shall not pass//定义⼀个矩形9
Rectangle rect = new Rectangle(20, 20, 220, 200);10
g.FillRectangle(brush, rect);11 //g.DrawRectangle(pen, rect);12}
画矩形
3.3 画圆
①填充圆:g.FillEllip(brush, rect);
②不填充圆:g.DrawEllip(pen, rect);
代码如下:
效果如下:
画圆
3.4 画弧/扇形
①画弧:g.DrawArc(pen, rect, -90,90); //四个参数分别为:Pen,矩形区域rect,起始⾓度(0为⽔平向右,顺时针为正),扫过⾓度。
②画填充扇形:g.FillPie(brush, rect, -45, 90); //四个参数分别为:Brush,矩形区域rect,起始⾓度(0为⽔平向右,顺时针为正),扫过⾓度。
south china③画不填充扇形g.DrawPie(pen,rect,-45,90); //四个参数分别为:Pen,矩形区域rect,起始⾓度(0为⽔平向右,顺时针为正),扫过⾓度。
代码如下:1
private void button1_Click(object nder, EventArgs e)2
{3
//画圆4
Pen pen = new Pen(Color.Red);5
SolidBrush brush = new SolidBrush(Color.YellowGreen);6
7
Graphics g = this.CreateGraphics();8
Rectangle rect = new Rectangle(20, 20, 200, 200);9
g.FillEllip(brush, rect);10 g.DrawEllip(pen, rect);11}