C#中使用CompoundArray绘制复合线条矩形
本文介绍了如何在 C# Windows Forms 应用程序中绘制带有复合线条效果的矩形。核心方法是使用 System.Drawing.Pen 类的 CompoundArray 属性,它允许定义画笔内部的线条分布,从而绘制出双线或多线边框。
实现目标与原理
CompoundArray 属性接收一个浮点数组,用于指定从画笔中心到边缘的相对位置。数组中的每个值应在 0.0 到 1.0 之间。当绘制形状时,GDI+ 会根据这些值在对应的比例位置绘制线条。
例如,若数组为 {0.0, 1.0},则会在边缘(0.0)和另一侧边缘(1.0)各画一条线,形成标准的双线框效果。
具体操作步骤
第 1 步:创建画笔并配置复合数组
首先实例化一个 Pen 对象,设定颜色和线宽,然后赋值 CompoundArray。数组元素越多,绘制的平行线越密集。
using System.Drawing;
using System.Drawing.Drawing2D;
// 创建蓝色画笔,宽度为 20 像素
Pen pen = new Pen(Color.Blue, 20);
// 设置复合数组:定义内部线条的位置
// 0.0 表示最内侧,1.0 表示最外侧
pen.CompoundArray = new float[]
{
0.0f, // 第1条线(内侧)
0.25f, // 第2条线
0.45f, // 第3条线
0.55f, // 第4条线
0.75f, // 第5条线
1.0f // 第6条线(外侧)
};
第 2 步:获取 Graphics 对象
为了在窗体上绘图,需要获取当前窗体的绘图上下文 Graphics 对象。在事件处理程序中(如按钮点击),可以直接使用 this.CreateGraphics() 或重写 OnPaint 方法。
第 3 步:绘制矩形
调用 DrawRectangle 方法,传入配置好的画笔、矩形位置和尺寸。由于画笔较宽且包含复合数组,最终呈现的是一个具有多条平行纹理的矩形边框。
private void button1_Click(object sender, EventArgs e)
{
// 重置背景以防累积
this.Invalidate();
using (Graphics g = this.CreateGraphics())
{
Pen pen = new Pen(Color.Blue, 20);
pen.CompoundArray = new float[] { 0.0f, 0.25f, 0.45f, 0.55f, 0.75f, 1.0f };
// 参数:画笔, x坐标, y坐标, 宽度, 高度
Rectangle rect = new Rectangle(50, 50, 300, 200);
g.DrawRectangle(pen, rect);
}
}
注意事项与维护建议
- 资源释放:
Pen和Graphics都实现了IDisposable接口,建议在使用后使用using语句或手动调用Dispose以释放非托管资源。 - 绘制区域:如果需要在窗体刷新时保持图形,应将绘图代码移至
OnPaint(PaintEventArgs e)方法中,并使用e.Graphics代替CreateGraphics,否则窗口最小化再最大化后图像会丢失。 - 数组对称性:为了实现美观的双线效果,通常数组首尾对应内侧和外侧,中间值按比例分配。数值需严格递增。
以上就是C#画笔使用CompoundArray绘制单个矩形的详细内容,更多关于C# GDI+绘图技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













