You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中通过按钮点击事件在窗体上进行绘制?

通过按钮点击触发C#窗体绘制(Visual Studio 2022)

最可靠的方式是通过触发窗体的Paint事件完成绘制,因为Paint事件会自动处理重绘场景(比如窗体被遮挡后恢复、最小化还原时)。具体实现如下:

方法一:触发Paint事件重绘(推荐)

  1. 在Visual Studio设计器中给窗体添加按钮(比如命名为btnDraw),双击按钮生成点击事件处理程序。
  2. 给窗体绑定Paint事件:选中窗体,在属性窗口点击闪电图标(事件面板),找到Paint并双击,生成事件处理方法。
  3. 编写代码:
// 按钮点击事件:触发窗体重绘
private void btnDraw_Click(object sender, EventArgs e)
{
    // Invalidate()标记整个窗体需要重绘,系统会自动调用Paint事件
    this.Invalidate();
    // 若只需重绘特定区域,可指定范围:this.Invalidate(new Rectangle(50,50,200,100));
}

// 窗体Paint事件:编写核心绘制逻辑
private void Form1_Paint(object sender, PaintEventArgs e)
{
    // 使用PaintEventArgs提供的Graphics对象执行绘制
    Pen redPen = new Pen(Color.Red, 2);
    e.Graphics.DrawRectangle(redPen, 50, 50, 200, 100);
    // 释放GDI+资源
    redPen.Dispose();
}

方法二:直接获取Graphics绘制(不推荐)

如果仅需临时绘制无需持久化的内容,可直接在按钮点击中获取窗体的Graphics对象,但绘制内容会在窗体重绘时消失:

private void btnDraw_Click(object sender, EventArgs e)
{
    // using语句自动释放Graphics资源
    using(Graphics g = this.CreateGraphics())
    {
        Pen bluePen = new Pen(Color.Blue, 3);
        g.DrawEllipse(bluePen, 100, 100, 150, 100);
        bluePen.Dispose();
    }
}

新手注意事项

  • 优先选择方法一,它能保证绘制内容在窗体重绘时自动恢复。
  • 所有GDI+对象(如Pen、Brush)使用后必须释放资源,避免内存泄漏,推荐用using语句自动管理。

内容的提问来源于stack exchange,提问作者kyleryan1291

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:35:08