Winform下的畫板

不愿透露姓名的小村村發表於2024-09-05

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);
    • 然後就可以開始畫畫了,程式碼及效果如下:
 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方法,程式碼及效果如下:
 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);
        }

相關文章