C#中使用Brush创建Pen绘制渐变图形

不晚
不晚
发布时间:2026-10-13| 5人浏览过
原创

在C#图形编程中,通常使用笔刷(Brush)填充区域,使用画笔(Pen)绘制线条。本文将展示如何将画刷转换为画笔,以实现在绘制的图形轮廓上应用复杂的渐变效果。

实现目标

默认情况下,System.Drawing.Pen 的构造函数接受单一颜色。若要在绘制的线条或形状边缘上使用渐变色彩(如红绿蓝过渡),需要将 Brush 对象赋值给 Pen。这允许绘制出具有复杂视觉效果的边框或路径。

准备条件

  • 项目需引用 System.Drawing 和 System.Drawing.Drawing2D 命名空间。
  • 基于 Windows Forms 应用程序开发环境。

操作步骤

第1步:定义渐变画刷

首先创建一个线性渐变画刷。这里以窗体客户区为矩形范围,初始化一个起始角度为100度的渐变。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace WindowsApplication2
{
  public partial class Form11 : Form
  {
    public Form11()
    {
      InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
      LinearGradientBrush brush = new LinearGradientBrush(this.ClientRectangle, Color.Empty, Color.Empty, 100);
      ColorBlend blend = new ColorBlend();
      blend.Colors = new Color[] { Color.Red, Color.Green, Color.Blue };
      blend.Positions = new float[] { 0, .5f, 1 };
      brush.InterpolationColors = blend;
      Pen pen5 = new Pen(brush);
      Graphics g5 = this.CreateGraphics();
      Point[] p = new Point[] { new Point(0, 0), new Point(100, 100), new Point(50, 100), new Point(200, 100) };
      g5.DrawEllipse(pen5, 0, 0, 100, 100);
    }
  }
}

注意:上述代码片段直接展示了完整的操作流程,下面进行详细拆解。

第2步:配置颜色混合(ColorBlend)

为了控制渐变的颜色分布,实例化 ColorBlend 对象。设置需要渐变的颜色数组以及对应的相对位置(0到1之间):

  • Colors: 设置为红色、绿色、蓝色。
  • Positions: 分别对应起始点 (0)、中点 (0.5f) 和终点 (1)。这意味着从起点到终点,颜色将经历红→绿→蓝的平滑过渡。
blend.Colors = new Color[] { Color.Red, Color.Green, Color.Blue };
blend.Positions = new float[] { 0, .5f, 1 };
brush.InterpolationColors = blend;

第3步:将画刷应用于画笔

这是核心步骤。利用 new Pen(brush) 构造函数,将已配置好颜色的画刷赋给画笔对象 pen5。此时,pen5 不再只是单色线条,而是拥有了渐变属性。

Pen pen5 = new Pen(brush);

第4步:执行绘图操作

获取绘图上下文 Graphics 对象,并使用配置好的 pen5 绘制图形。本例中使用了 DrawEllipse 方法,在原点 (0,0) 处绘制宽高均为100像素的椭圆。

Graphics g5 = this.CreateGraphics();
g5.DrawEllipse(pen5, 0, 0, 100, 100);

虽然代码中还定义了 p 数组,但在 DrawEllipse 中未实际使用,该部分为冗余代码,实际绘制结果仅取决于椭圆坐标参数。

完成判断

运行程序并点击按钮后,窗体上将显示一个椭圆形轮廓。该轮廓的颜色将从红色平滑过渡到绿色,再过渡到蓝色,验证了画刷成功赋予了画笔渐变特性。

简要总结

通过以上步骤,我们实现了在C#中将画刷转换为画笔的技术方案。这种方法适用于需要对图形轮廓进行丰富色彩渲染的场景。以上就是C#从画刷创建画笔的详细方法,更多关于C#绘图技术的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。