1 定义画板
Graphics g = paintEvnt.Graphics;//绘制事件的 画板成员
Graphics g = this.CreateGraphics();//或者直接生成。this可以为Form1,pictureBox
Graphics g = Graphics.FromHwnd(hwnd);//从窗口句柄生成。其中:IntPtr hwnd = this.Handle;
Graphics g = Graphics.FromHdc(hdc);// 由绘图板句柄生成。其中:IntPtr hdc = e.Graphics.GetHdc();//不知道这种方式适合用在什么地方。。
用这种句柄方式生成的g,必须在后面释放一下:e.Graphics.ReleaseHdc(hdc);g.Dispose();
Graphics g = Graphics.FromImage(imageFile); //由图形生成。其中:Image imageFile = Image.FromFile("test2.jpg");
2 定义画笔
Pen pen = new Pen(Color.Black, 3);//构造新画笔
Brush brush = Brushes.Blue;//画刷
Pen pen2 = new Pen(brush);//用画刷生成画笔
Pen pen3 = new Pen(brush, 4);//增加一个画笔大小属性
Pens.Black;//使用预定义的默认大小为1的画笔
3 画图用到的常用结构定义方法
Font font = new Font("黑体",14);//写字时,需要定义字体DrawString
PointF pointf = new PointF(100,20);//点,
PointF[] pointsf = new PointF[] { new PointF(10, 20), new PointF(180, 148), new PointF(260, 128),
new Point(370,318),new Point(200,268),new Point(170,498)};//系列点
Rectangle rectangle = new Rectangle(220,120,150,100);//矩形
RectangleF[] rectangles =
{
new RectangleF( 0.0F, 0.0F, 100.0F, 200.0F),
new RectangleF(100.0F, 200.0F, 250.0F, 50.0F),
new RectangleF(300.0F, 0.0F, 50.0F, 100.0F)
};//一系列矩形
Icon icon = new Icon("C:/test.ico");//图标
Image image = Image.FromFile("C:/test.jpg", true);//图形
GraphicsPath path = new GraphicsPath();//路径
path.AddEllipse(100, 100, 200, 100);
4 基本图形绘制
g.DrawArc(pen, rectangle, 30, 180);//圆弧,顺时针计算角度
g.DrawRectangle(pen3, rectangle);//矩形
g.DrawCurve(pen, pointsf);//曲线,多点连曲线
g.DrawClosedCurve(Pens.Red, pointsf);//封闭曲线,头尾自动连接起来
g.DrawEllipse(pen, rectangle);//内切椭圆
g.DrawIcon(icon, rectangle);//图标,缩放到指定矩形大小
g.DrawIconUnstretched(icon, rectangle);//不缩放,图标与矩形左上角对齐
g.DrawImage(image, 100, 410, 60, 30);//显示图像,按指定位置x,y和大小w,h显示(缩放)
g.DrawLine(pen, 10, 10, 20, 39);//两点画线,起点x,y,终点x,y
g.DrawLines(pen3, pointsf);//多点连直线,连续线段,与多边形不同是它不封闭
g.DrawPath(pen, path);//路径
float startAngle = 0.0F;
float sweepAngle = 145.0F;
g.DrawPie(pen,rectangle, startAngle, sweepAngle);//跟指定矩形内切的二维饼图
g.DrawPolygon(Pens.Pink, pointsf);//多边形
g.DrawRectangles(Pens.YellowGreen, rectangles);//矩形
g.DrawString("测试", font, Brushes.Blue, 100, 200);//文字
g.FillClosedCurve(Brushes.Blue, pointsf, FillMode.Winding, 1);//填充曲线区域
//Fill系列命令填充与上相同。