在C#开发中,绘制矩形是常见的图形处理需求,不同开发场景对应的实现方式存在差异,下面详细介绍各类场景下的矩形绘制方法。

一、GDI+基础绘图:使用Graphics类的DrawRectangle方法
这是C#中最基础的矩形绘制方式,适用于所有支持GDI+的环境,核心是Graphics类的DrawRectangle方法,该方法需要传入画笔和矩形的位置、尺寸参数。
1.1 基本语法
DrawRectangle方法有两个常用重载版本:
DrawRectangle(Pen pen, int x, int y, int width, int height):通过左上角坐标和宽高定义矩形DrawRectangle(Pen pen, Rectangle rect):通过Rectangle结构体定义矩形
1.2 代码示例(控制台程序)
以下示例在控制台程序中创建位图并绘制红色矩形,最后保存到本地:
using System;
using System.Drawing;
namespace DrawRectangleDemo
{
class Program
{
static void Main(string[] args)
{
// 创建位图对象,尺寸为500x500
using (Bitmap bitmap = new Bitmap(500, 500))
{
// 创建Graphics绘图对象
using (Graphics g = Graphics.FromImage(bitmap))
{
// 设置背景色为白色
g.Clear(Color.White);
// 创建红色画笔,线宽为2
using (Pen pen = new Pen(Color.Red, 2))
{
// 方法1:直接传入坐标和宽高,左上角(50,50),宽200,高100
g.DrawRectangle(pen, 50, 50, 200, 100);
// 方法2:使用Rectangle结构体,左上角(100,200),宽300,高150
Rectangle rect = new Rectangle(100, 200, 300, 150);
g.DrawRectangle(pen, rect);
}
}
// 保存位图到本地
bitmap.Save("rectangles.png");
Console.WriteLine("矩形绘制完成,已保存到rectangles.png");
}
}
}
}
二、WinForms窗体绘制矩形
在WinForms桌面程序中,通常在控件的Paint事件中绘制矩形,这样可以保证窗体刷新时矩形不会消失。
2.1 基本实现步骤
- 给目标控件(如Panel、Form)绑定
Paint事件 - 在事件处理方法中获取
Graphics对象 - 调用
DrawRectangle方法绘制
2.2 代码示例
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WinFormsDrawDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 绑定窗体的Paint事件
this.Paint += Form1_Paint;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// 从事件参数中获取Graphics对象
Graphics g = e.Graphics;
// 创建蓝色画笔
using (Pen pen = new Pen(Color.Blue, 3))
{
// 绘制左上角(30,30),宽400,高300的矩形
g.DrawRectangle(pen, 30, 30, 400, 300);
}
// 创建绿色画刷,绘制填充矩形
using (SolidBrush brush = new SolidBrush(Color.Green))
{
// 绘制左上角(80,80),宽200,高150的填充矩形
g.FillRectangle(brush, 80, 80, 200, 150);
}
}
}
}
三、WPF中绘制矩形
WPF的绘图体系和WinForms不同,不需要手动调用绘图方法,直接使用Rectangle控件即可,也可以通过DrawingContext在自定义绘制中实现。
3.1 使用Rectangle控件(XAML方式)
在XAML中直接声明Rectangle元素,设置位置和样式:
<Window x:Class="WpfDrawDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="450" Width="800">
<Grid>
<!-- 绘制描边红色、填充黄色、线宽2、位置(50,50)、宽300、高200的矩形 -->
<Rectangle
Stroke="Red"
StrokeThickness="2"
Fill="Yellow"
Margin="50,50,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="300"
Height="200"/>
</Grid>
</Window>
3.2 使用DrawingContext绘制
在自定义控件或重写OnRender方法时使用:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace WpfDrawDemo
{
public class CustomRectangleControl : Control
{
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
// 创建黑色画笔,线宽2
Pen pen = new Pen(Brushes.Black, 2);
// 绘制左上角(20,20),宽400,高300的矩形
drawingContext.DrawRectangle(Brushes.LightBlue, pen, new Rect(20, 20, 400, 300));
}
}
}
四、绘制矩形的常用参数说明
不同方法中的核心参数含义一致,以下是常见参数说明:
| 参数 | 含义 |
|---|---|
| x | 矩形左上角的X坐标 |
| y | 矩形左上角的Y坐标 |
| width | 矩形的宽度 |
| height | 矩形的高度 |
| pen | 定义矩形描边的颜色、线宽等属性 |
| brush | 定义矩形填充的颜色、纹理等属性 |
五、注意事项
- 使用GDI+绘图时,
Pen和Brush对象建议放在using语句中,避免内存泄漏 - WinForms中如果在非
Paint事件中绘制,窗体刷新后绘制内容会消失,需要主动触发Invalidate方法重绘 - WPF中
Rectangle控件的Margin属性会影响定位,需要根据布局需求调整 - 绘制圆角矩形可以使用
DrawPath方法配合GraphicsPath实现,通过添加圆角弧线路径完成
C#DrawRectangleGDI+GraphicsWinForms修改时间:2026-06-26 22:18:53