Csharp winform实现基本绘图

1. Winform如何实现简单绘图

  • 如果想要自己画一个圆,矩形或者其他图形,可以使用控件或窗体自带的Paint事件,在事件中引用Graphics对象;
  • 也可以使用某个窗体或者控件的CreateGraphics方法
  • 需要引用using System.Drawing.Drawing2D;(要画3D就用DirectX)

2. 使用Form1窗体Paint事件

  • 步骤:
    • 先画一个画板 Graphics g = e.Graphics;
    • 再拿一支笔Pen p = new Pen(Color.Blue, 2);
    • 然后就可以开始画画了,代码及效果如下:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      private void Form1_Paint(object sender, PaintEventArgs e)
      {
      //创建一个winform提供的画板
      Graphics g = e.Graphics;

      //需要一支笔
      Pen p = new Pen(Color.Blue, 2);

      //开始画画
      g.DrawLine(p, 10, 10, 100, 100);//在画板上画直线,起始坐标为(10,10),终点坐标为(100,100)
      g.DrawRectangle(p, 10, 10, 100, 100);//在画板上画矩形,起始坐标为(10,10),宽为100,高为100
      g.DrawEllipse(p, 10, 10, 100, 100);//在画板上画圆,起始坐标为(10,10),外接矩形的宽为100,高为100
      }

3.使用CreateGraphics方法

  • 在按钮的Click事件中做一个画板,使用CreateGraphics方法,代码及效果如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    private void button1_Click(object sender, EventArgs e)
    {
    Pen p = new Pen(Color.Blue, 5);//设置笔的粗细为,颜色为蓝色
    Graphics g = this.CreateGraphics();

    //画虚线
    p.DashStyle = DashStyle.Dot;//定义虚线的样式为点
    g.DrawLine(p, 10, 200, 200, 200);

    //自定义虚线
    p.DashPattern = new float[] { 2, 1 };//设置短划线和空白部分的数组
    g.DrawLine(p, 10, 210, 200, 210);

    //画箭头,只对不封闭曲线有用
    p.DashStyle = DashStyle.Solid;//恢复实线
    p.EndCap = LineCap.ArrowAnchor;//定义线尾的样式为箭头
    g.DrawLine(p, 10, 220, 200, 220);

    //g.Dispose();
    //p.Dispose();

    Rectangle rect = new Rectangle(300, 10, 50, 50);//定义矩形,参数为起点横纵坐标以及其长和宽
    //单色填充
    SolidBrush b1 = new SolidBrush(Color.Blue);//定义单色画刷
    g.FillRectangle(b1, rect);//填充这个矩形

    //字符串
    g.DrawString("字符串", new Font("宋体", 10), b1, new PointF(390, 10));

    //用图片填充
    TextureBrush b2 = new TextureBrush(Image.FromFile(@"C:\Users\xiaocuncun\Desktop\屏幕截图 2024-09-05 222652.png"));
    rect.Location = new Point(300, 70);//更改这个矩形的起点坐标
    rect.Width = 200;//更改这个矩形的宽来
    rect.Height = 200;//更改这个矩形的高
    g.FillRectangle(b2, rect);

    //用渐变色填充
    rect.Location = new Point(300, 290);
    LinearGradientBrush b3 = new LinearGradientBrush(rect, Color.Yellow, Color.Black, LinearGradientMode.Horizontal);
    g.FillRectangle(b3, rect);
    }

Csharp winform实现基本绘图
http://example.com/2024/09/05/Winform下的画板/
作者
xiao cuncun
发布于
2024年9月5日
许可协议