C# 中获取 Graphics 对象的方法
在做自定义控件时或者GDI+的时候经常会遇到获取Graphics实例的问题。一般有 4 种获取方式。
正文
从Paint事件的参数中获取。 窗体和许多控件都有一个Paint事件,有一个PaintEventArgs类型的参数e
1
2
3
4
5
6
7
8
9private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs e)
{
//获取Graphic对象
Graphics g = e.Graphics;
//书写绘图代码
g.DrawLine(new Point(0,0),new Point(1,1));
//释放Graphic对象占用的资源
g.Dispose();
}用CreateGraphics方法创建 如果需要在Paint方法以外绘图,可以通过控件或窗体的CreateGraphics方法来获取Graphics对象
1
2
3using(Graphics g=new Control().CreateGraphics())
{
}对Image对象调用Graphics.FromImage获取
1
2
3
4//创建Image对象
Bitmap image1 = new Bitmap("football.jpg");
//窗体的绘图对象
Graphics formE = e.Graphics;通过Graphics的FromHwnd函数
1
2
3
4HandleRef NullHandleRef = new HandleRef(null, IntPtr.Zero);
using (Graphics g = Graphics.FromHwnd(NullHandleRef.Handle))
{
}