C# 窗体渐变色

文章目录

在winform项目开发中,需要实现渐变色。本文就详细介绍如何实现。效果如下:

实现方案

利用Color类中FromArgb属性,通过for循环,修改color颜色,并使用Graphics类绘制

知识点

Color

FromArgb:

csharp 复制代码
public static System.Drawing.Color FromArgb (int red, int green, int blue);

参数:

  • red :Int32 新Color的红色分量值。 有效值为 0 到 255。
  • green Int32 新Color的绿色组件值。 有效值为 0 到 255。
  • blue Int32 新Color的蓝色分量值。 有效值为 0 到 255。

返回

Color

csharp 复制代码
Color color1 = new Color();
for(int i=0;i<=255;i++)
{
    color1.FromArgb(1,i,100);
}

SolidBrush

定义单色画笔。 画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。 此类不能被继承。

SolidBrush(Color) 初始化指定颜色的新 SolidBrush 对象。

csharp 复制代码
Color color1 = new Color();
for(int i=0;i<=255;i++)
{
    color1.FromArgb(1,i,100);
    SolidBrush SBrush = new SolidBrush(color);//实例化一个单色画笔类对象SBrush
}

Pen

定义用于绘制直线和曲线的对象。 此类不能被继承。

Pen(Brush, Single): 用指定的 Pen 和 Color 属性初始化 Width 类的新实例。
参数

  • brush :Brush.一个 Brush,决定此 Pen 的特征。
  • width :Single。新 Pen 的宽度。
csharp 复制代码
Color color1 = new Color();
for(int i=0;i<=255;i++)
{
    color1.FromArgb(1,i,100);
    SolidBrush SBrush = new SolidBrush(color);//实例化一个单色画笔类对象SBrush
    Pen pen = new Pen(SBrush, 1);//实例化一个用于绘制直线和曲线的对象pen
}

Graphics

封装一个 GDI+ 绘图图面。 此类不能被继承。

方法

DrawRectangle:绘制由坐标对、宽度和高度指定的矩形。

DrawRectangle(Pen, Int32, Int32, Int32, Int32):绘制由坐标对、宽度和高度指定的矩形。
参数

  • pen :Pen。确定矩形的颜色、宽度和样式的 Pen。

  • x : Int32,要绘制的矩形左上角的 x 坐标。

  • y : Int32,要绘制的矩形左上角的 y 坐标。

  • width: Int32 ,要绘制的矩形的宽度。

  • height: Int32.要绘制的矩形的高度。

OnPaintBackground(PaintEventArgs)

Control.OnPaintBackground(PaintEventArgs) 方法

绘制控件的背景。

代码展示

csharp 复制代码
protected override void OnPaintBackground(PaintEventArgs e)
{
    int intLocation, intHeight;//定义两个int型的变量intLocation、intHeight 
    intLocation = this.ClientRectangle.Location.Y;//为变量intLocation赋值
    intHeight = this.ClientRectangle.Height / 200;//为变量intHeight赋值
    for (int i =255; i >= 0; i--)
    {
        Color color = new Color();//定义一个Color类型的实例color
        //为实例color赋值
        color = Color.FromArgb(1, i, 100);
        SolidBrush SBrush = new SolidBrush(color);//实例化一个单色画笔类对象SBrush
        Pen pen = new Pen(SBrush, 1);//实例化一个用于绘制直线和曲线的对象pen
        e.Graphics.DrawRectangle(pen, this.ClientRectangle.X, intLocation, this.Width, intLocation + intHeight);//绘制图形
        intLocation = intLocation + intHeight;//重新为变量intLocation赋值
    }
}
相关推荐
tianbin9113 分钟前
批处理与微调辅助场景:Claude 中转并发、链路缓存与压测对比
java·开发语言·缓存
小冯不疯6 分钟前
688 / 拼多多 / 淘特三类供货链路:从采购单到应付凭证的 4 段对账
javascript
frjc12 分钟前
Spring AI 里 ChatClient 和 ChatModel 有什么区别?什么时候该用哪个?
java·开发语言·spring·ai
moshuying12 分钟前
DeppInfer系列之 - 矩阵、注意力与 GPU:拆解 DeepGEMM 与 FlashMLA
前端·javascript·面试
小成2023032026518 分钟前
C++~05异常处理
开发语言·c++
Wang's Blog20 分钟前
Java 项目实战: 交友项目 - 圈子功能的表设计方案
java·开发语言·交友
轻舟技术A1 小时前
Rust 重写 Pi:会话启动耗时降 91%,就绪内存少 78%
开发语言·后端·rust
淡海水1 小时前
07-01-源码-.NET Core GC总览与架构
unity·架构·c#·.netcore·gc
Jack N1 小时前
【Strapi 系列之五】前端怎么接?Next.js + Tailwind 拉取 Strapi 数据(含代码)
开发语言·前端·javascript·strapi