实现窗体的渐变背景

小学生队长天枰

小学生队长天枰

2016-02-19 15:32

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享实现窗体的渐变背景的教程,热爱PS的朋友们快点看过来吧!

  A:关键所在

  渐变图形是一种特殊的图形,它从窗体的一端开始移动,同时颜色缓慢变化,达到窗体的另一端,但图形已经变为另一种颜色。

  这种奇特的视觉效果制作起来相当简单,只需将屏幕分成许多行,每一行显示不同的颜色就可以了。渐变图形可以有许多种形式,有圆形渐变、矩形渐变、对角渐变等多种显示效果。要显示渐变,需使用到RGB 宏,每次使颜色值的各颜色分量稍有变化。

  B:实现与应用

  选择菜单 File | New Application,创建一个新的项目文件。在窗体 Form1 上放置一个 TColorDialog 控件,然后切换到Unit1.h,在 TForm1 的 private 部分加入两个变量的定义,分别用于设置起始颜色和终止颜色。

  private: // User declarations

  TColor StartColor,EndColor;

  然后双击窗体,创建窗体的 OnCreate 事件处理函数,在其中加入如下代码,用于让用户选择起始颜色和结束颜色。

  

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 if(ColorDialog1-Execute())
  StartColor=ColorDialog1-Color;
 if(ColorDialog1-Execute())
  EndColor=ColorDialog1-Color;
}
//---------------------------------------------------------------------------

  最后创建窗体 Form1 的 OnPaint 事件处理函数,在其中加入如下代码,用稍有变化的颜色值画一系列的垂直线,达到渐变的效果。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  

//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
 float pwidth;
 int redstart,greenstart,bluestart,redend,greenend, blueend;
 float redinc,greeninc,blueinc;
 pwidth=float(Width);
 redstart=GetRValue(StartColor);
 greenstart=GetGValue(StartColor);
 bluestart=GetBValue(StartColor);
 redend=GetRValue(EndColor);
 greenend=GetGValue(EndColor);
 blueend=GetBValue(EndColor);
 redinc=(redend-redstart)/pwidth;
 greeninc=(greenend-greenstart)/pwidth;
 blueinc=(blueend-bluestart)/pwidth;
 for(int i=0;iWidth;i++)
 {
  Canvas-Pen-Color=TColor(RGB(redstart+int(redinc*i),
  greenstart+int(greeninc*i),
  bluestart+int(blueinc*i)));
  Canvas-MoveTo(i,0);
  Canvas-LineTo(i,Height);
 }
}
//---------------------------------------------------------------------------

  C:专家点评

  程序中设渐变开始的颜色为 StartColor,结束的颜色为 EndColor。利用GetRValue、GetGValue、GetBValue 函数分别获得开始颜色的红、绿、蓝三原色分量 redstart greenstart bluestart 和结束颜色的三原色红、绿、蓝分量 redend greenend blueend。如果矩形的宽度为 pwidth 象素,则每次变化的各颜色分量值应分别为(redend-redstart)/pwidth、(greenend-greenstart)/pwidth、(blueend-bluestart)/pwidth,最后写一个循环,画一系列直线。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  这里介绍的仅仅是颜色渐变的一种形式,读者完全可以参照其实现方法,改变数学运算,实现如从上至下逐步加深、从左至右逐步加深等颜色渐变形式,此外,还可以通过画一系列颜色不断变化的圆,制作圆形渐变效果。首先画一个最大的圆,然后依次画半径比前一个圆小一个象素的圆,然后依次画半径比前一个圆小一个象素的圆,同时圆的颜色也发生变化。

展开更多 50%)
分享

猜你喜欢

实现窗体的渐变背景

编程语言 网络编程
实现窗体的渐变背景

VisualBasic窗体背景花纹的实现

编程语言 网络编程
VisualBasic窗体背景花纹的实现

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用VisualBasic窗体背景花纹的实现

编程语言 网络编程
用VisualBasic窗体背景花纹的实现

椭圆窗体的实现

C语言教程 C语言函数
椭圆窗体的实现

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

透明窗体的又一实现

C语言教程 C语言函数
透明窗体的又一实现

自动隐藏停泊窗体实现

C语言教程 C语言函数
自动隐藏停泊窗体实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

左手边旳温热 - QQ情侣分组

左手边旳温热 - QQ情侣分组

使用 Google Ajax Search API

使用 Google Ajax Search API
下拉加载更多内容 ↓