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);
    • 然后就可以开始画画了,代码及效果如下:
 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);
        }

posted @   不愿透露姓名的小村村  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示