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

- 步骤:
- 先画一个画板
Graphics g = e.Graphics;
- 再拿一支笔
Pen p = new Pen(Color.Blue, 2);
- 然后就可以开始画画了,代码及效果如下:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen p = new Pen(Color.Blue, 2);
g.DrawLine(p, 10, 10, 100, 100);
g.DrawRectangle(p, 10, 10, 100, 100);
g.DrawEllipse(p, 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);
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);
}

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库