C#创建背景色渐变窗体的方法:创建特殊窗体

目录

1.让背景渐变色的理论基础

2.让背景渐变色的方法

3.一个实施例

(1)Form1.Designer.cs

(2)Form1.cs

(3)渐变的蓝色背景


在窗体设计时,可以通过设置窗体的BackColor属性来改变窗口的背景颜色,但是该属性改变后整个窗体的客户区都会变成这种颜色,这样显得非常单调。如果窗体的客户区可以像标题栏一样能够体现颜色的渐变效果,那么窗体风格将会另有一番风味。

1.让背景渐变色的理论基础

在实现窗体背景色渐变功能时主要用到了Color结构的FromArgb方法,Color结构表示一种ARGB颜色(alpha、红色、绿色和蓝色),其FromArgb方法用来从指定的8位颜色值(红色、绿色和蓝色)创建Color结构,该方法为可重载方法,其最常用的语法格式如下:

cs 复制代码
publie static Color FromArgb(int red,int green,int blue)

FromArgb方法中的参数说明如表:

|---------------------|------------------------|
| | |
| red | 新Color的红色分量值,有效值为0~255 |
| green | 新Color的绿色分量值,有效值为0~255 |
| blue | 新Color的蓝色分量值,有效值为0~255 |
| 返回值 | 创建的Color结构 |

2.让背景渐变色的方法

FromArgb方法就是用3种不同的色值来返回一个颜色,而稍微调整某一种颜色值就可以使整体的颜色发生细微的变化,在窗体中至上而下每行填充一种稍微调整后的颜色,这样整体看来就会产生渐变的效果。可以利用窗体的Graphics对象对窗体进行绘图,该对象可以完全操控窗体的客户区。

3.一个实施例

生成渐变的蓝色背景。

(1)Form1.Designer.cs

cs 复制代码
namespace _184
{
    partial class Form1
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            SuspendLayout();
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(368, 252);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "窗体背景渐变色";
            ResumeLayout(false);
        }

        #endregion
    }
}

(2)Form1.cs

cs 复制代码
// 窗体渐变色
namespace _184
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 重写窗体背景色
        /// </summary>
        protected override void OnPaintBackground(PaintEventArgs e)
        {
            int intLocation, intHeight;
            intLocation = ClientRectangle.Location.Y;//为变量intLocation赋值
            intHeight = ClientRectangle.Height / 200;//为变量intHeight赋值
            for (int i = 255; i >= 0; i--)
            {
                Color color = Color.FromArgb(1, i, 100);
                SolidBrush SBrush = new(color);      //实例化一个单色画笔类对象SBrush
                Pen pen = new(SBrush, 1);            //实例化一个用于绘制直线和曲线的对象pen
                e.Graphics.DrawRectangle(pen, ClientRectangle.X, intLocation, Width, intLocation + intHeight);//绘制图形
                intLocation += intHeight;            //重新为变量intLocation赋值
            }
        }
    }
}

(3)渐变的蓝色背景

相关推荐
海威的技术博客14 分钟前
JS中的原型与原型链
开发语言·javascript·原型模式
WPG大大通22 分钟前
基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD& Video 之全功能显示器连接端口方案
c语言·开发语言·计算机外设·开发板·电源·大大通
从以前36 分钟前
【算法题解】Bindian 山丘信号问题(E. Bindian Signaling)
开发语言·python·算法
high20111 小时前
【Java 基础】-- ArrayList 和 Linkedlist
java·开发语言
1nullptr1 小时前
lua和C API库一些记录
开发语言·lua
Jerry Nan1 小时前
Lua元表
开发语言·lua
?333331 小时前
CTFHub Web进阶-PHP-Bypass disable_function攻略
开发语言·安全·web安全·php
所以经济危机就是没有新技术拉动增长了1 小时前
二、javascript的进阶知识
开发语言·javascript·ecmascript
Bubluu1 小时前
浏览器点击视频裁剪当前帧,然后粘贴到页面
开发语言·javascript·音视频