C#如何画矩形?最全用法总结

来源:网站主作者:高宇头衔:草根站长
导读:本期聚焦于小伙伴创作的《C#如何画矩形?最全用法总结》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何画矩形?最全用法总结》有用,将其分享出去将是对创作者最好的鼓励。

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

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 基本实现步骤

  1. 给目标控件(如Panel、Form)绑定Paint事件
  2. 在事件处理方法中获取Graphics对象
  3. 调用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+绘图时,PenBrush对象建议放在using语句中,避免内存泄漏
  • WinForms中如果在非Paint事件中绘制,窗体刷新后绘制内容会消失,需要主动触发Invalidate方法重绘
  • WPF中Rectangle控件的Margin属性会影响定位,需要根据布局需求调整
  • 绘制圆角矩形可以使用DrawPath方法配合GraphicsPath实现,通过添加圆角弧线路径完成

C#DrawRectangleGDI+GraphicsWinForms修改时间:2026-06-26 22:18:53

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。