Graphics基础
Graphics
Graphics类 封装一个GDI+绘图图面, 一个密封类 来自System.Drawing 命名空间提供将对象绘制到显示设备的方法,Graphics与特定的设备上下文关联。
画图方法都被包括在Graphics类中,在画任何对象(例如:线、圆、矩形等)时,我们首先要创建一个Graphics类实例,这个实例相当于建立了一块画布,有了画布才可以用各种画图方法进行绘图。
开始
可能要引用的命名空间
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
步骤
- 创建Graphics对象;
- 使用Graphics对象的方法绘图、显示文本或处理图像。
创建Graphics对象方法
- 利用控件或窗体的Paint事件中的PainEventArgs创建 (Paint事件是重绘时发生)—控件重绘
private void Form1_Paint(object sender, PaintEventArgs e) - 调用某控件或窗体的CreateGraphics方法 —-控件或窗体的绘图对象
Graphics g = panel1.CreateGraphics();//为控件创建绘图对象 - 调用Graphics类的FromImage静态方法 —- 基于图像上绘制
Graphics g = Graphics.FromImage(Image.FromFile(“Imgs/flower.jpg”));
抗锯齿
平滑模式有四种,默认为没有抗锯齿,消除锯齿时选用HighQuality或者AntiAlias
Invalid = -1,
Default = 0,
HighSpeed = 1,
HighQuality = 2,
None = 3,
AntiAlias = 4
Graphics类方法
绘制方法:
DrawLine/DrawLines 画线 DrawArc 圆弧 DrawCurve 画曲线
DrawClosedCurve画闭合曲线
DrawRectangle 画矩形 DrawPolygon 画多边形
DrawEllipse画椭圆 DrawPie 画饼形(扇形) DrawPath 画路径
DrawImage 画图像 DrawString 绘制文字
填充方法:闭合图形 :矩形、椭圆、多边形、路径、扇形、闭合曲线
FillElipse 填充椭圆 FillPath 填充路径 FillPie 填充饼图 FillPolygon 填充多边形 FillRectangle 填充矩形
FillRectangles 填充矩形组 FillRegion 填充区域
形状绘制与填充
画直线
新建笔/笔刷 new Pen(Color/Brush,float)
- 画一条直线
Pen pen01 = new Pen(Color.BlueViolet, 3);
g.DrawLine(pen01, 10, 10, 100, 150);
g.DrawLine(pen01, new Point(100, 150),new Point( 10, 150));
g.DrawLine(pen01, new Point(10, 150),new Point( 10, 10));
pen01.Dispose();//释放 - 画多条直线
Pen pen02 = new Pen(Color.Aqua, 2);
Point[] points = new Point[]
{
new Point(200, 10),
new Point(300, 10),
new Point(300,150),
new Point(200,100),
new Point(200, 10)
};
g.DrawLines(pen02, points);
pen02.Dispose();//释放
释放画布
g.Dispose();
画曲线
至少为3个点
g.DrawCurve(pen01, points);//默认张力,0.5f
g.DrawCurve(pen01, points,0.9f);
闭合曲线
需要注意曲线绘制和填充的先后关系,后填充会细一些。
//绘制闭合曲线
g.DrawClosedCurve(pen01, points);
//填充闭合曲线
g.FillClosedCurve(new SolidBrush(Color.Pink), points);