C#使用GDI+绘制矩形完整指南

Jasper
Jasper
发布时间:2026-10-14 | 3人浏览过
原创

C#中利用GDI+绘制矩形主要依赖System.Drawing命名空间。核心在于实例化Graphics对象获取画布,定义Pen钢笔确定边框样式,并调用DrawRectangle方法传入位置与尺寸参数。

核心原理与准备

GDI+(Graphics Device Interface Plus)是.NET Framework中用于二维矢量图形的类库。要绘制几何图形,必须明确三个要素:

  • 画布(Graphics):提供绘图表面,通常从控件或位图中获取。
  • 画笔(Pen):定义线条的颜色、宽度和样式(如实线、虚线)。
  • 矩形定义:由左上角坐标 (x, y) 以及宽度 (width)、高度 (height) 共同决定。

具体操作顺序

第1步:引入必要的命名空间

在使用GDI相关类之前,需确保项目中引用了 System.Drawing。在文件顶部添加:
using System.Drawing;
这使你能直接访问 Color、Pen、Graphics 等类型。

第2步:初始化画笔对象(Pen)

绘制矩形的边框需要一个 Pen 实例。你可以指定颜色和线宽。
示例代码如下:

// 创建一个黑色、宽度为2像素的画笔
Pen p = new Pen(Color.Black, 2); 

注意:Pen 实现了 IDisposable 接口,负责非托管资源的管理。在实际开发中,建议使用 using 语句或在完成任务后手动调用 p.Dispose() 以避免内存泄漏。

第3步:获取绘图上下文(Graphics)

Graphics 对象代表一个GDI+绘图面。根据应用场景不同,获取方式略有差异:

  • 自定义控件绘制:通常在重载控件的 OnPaint(PaintEventArgs e) 方法中,直接使用参数 e.Graphics。
  • 窗体即时绘制:可调用 CreateGraphics() 方法获取当前设备上下文的 Graphics 对象。
    示例:
Graphics g = CreateGraphics();

风险提示:通过 CreateGraphics()Paint 事件中进行绘制。

第4步:调用 DrawRectangle 方法

使用 Graphics 对象的 DrawRectangle 重载方法执行绘制。基本签名如下:

g.DrawRectangle(p, x, y, width, height);

结合前述步骤,完整的绘制逻辑如下:

Pen p = new Pen(Color.Black, 2);
Graphics g = CreateGraphics();

// 在坐标 (200, 200) 处绘制宽100高100的矩形
g.DrawRectangle(p, 200, 200, 100, 100); 

// 释放资源
g.Dispose();
p.Dispose();

上述代码将在界面坐标系的 (200, 200) 点开始,向右延伸100像素,向下延伸100像素,绘制出一个正方形边框。

常见场景:在 WinForm 控件上绘制

为了让矩形显示更稳定,推荐在 Panel 或 PictureBox 等容器的 Paint 事件中绘制。
以下是标准的重写方法示例:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    using (Pen p = new Pen(Color.Blue, 3))
    {
        // 在客户端区域绘制一个红色填充、蓝色边框的矩形示例
        Rectangle rect = new Rectangle(50, 50, 150, 100);
        e.Graphics.FillRectangle(Brushes.LightGray, rect); // 可选:填充背景
        e.Graphics.DrawRectangle(p, rect);                  // 绘制边框
    }
}

常见问题与排错

Q: 矩形绘制后窗口刷新就消失了怎么办?
A: 这说明你的绘图逻辑没有绑定到控件的重绘生命周期中(如 Paint 事件)。Windows 系统在每次需要重绘控件时都会触发该事件,将绘图指令写入其中可保证内容持久化。

Q: 为什么看不到绘制的内容?
A: 检查坐标是否超出了可视区域,或者画笔颜色是否与背景色相同(例如白色画笔在白色背景上)。此外,确保 Pen 和 Graphics 已正确实例化且未被提前 Dispose。

总结

利用 C# GDI+ 绘制矩形是一项基础且实用的技能。关键在于理解 Pen 定义外观、Graphics 提供画布、以及 DrawRectangle 指定几何参数的三者协作关系。为了保证程序的稳定性和性能,请优先在 Paint 事件中进行绘图操作,并注意及时释放 Pen 等非托管资源。

以上就是C#使用GDI绘制矩形的详细内容,更多关于C#图形编程的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表