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赋值
    }
}
相关推荐
LOVE️YOU3 小时前
Python 中 Tuple 为什么有时可 Hash,有时不可 Hash?
开发语言·python·哈希算法
李永奉3 小时前
C语言-指针函数与函数指针及回调函数的使用
c语言·开发语言
小oo呆3 小时前
【学习心得】迭代器和可迭代对象
开发语言·python
AC赳赳老秦3 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up3 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
迅猛龙办公室3 小时前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
杨丰玮4184 小时前
C语言基础知识(一)————各类符号的含义与输入输出库(stdio)
c语言·开发语言
程序猿编码4 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
言乐65 小时前
Python实现语音审核模型
开发语言·python·django·virtualenv·pygame
朝朝辞暮i5 小时前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法