A:关键所在
渐变图形是
![](/icons/17033yi.gif)
种特殊
![](/icons/17033de.gif)
图形
![](/icons/17033dou.gif)
它从窗体
![](/icons/17033de.gif)
![](/icons/17033yi.gif)
端开始移动
![](/icons/17033dou.gif)
同时颜色缓慢变化
![](/icons/17033dou.gif)
达到窗体
![](/icons/17033de.gif)
另
![](/icons/17033yi.gif)
端
![](/icons/17033dou.gif)
但图形已经变为另
![](/icons/17033yi.gif)
种颜色
![](/icons/17033dou2.gif)
这种奇特
![](/icons/17033de.gif)
视觉效果制作起来相当简单
![](/icons/17033dou.gif)
只需将屏幕分成许多行
![](/icons/17033dou.gif)
每
![](/icons/17033yi.gif)
行显示区别
![](/icons/17033de.gif)
颜色就可以了
![](/icons/17033dou2.gif)
渐变图形可以有许多种形式
![](/icons/17033dou.gif)
有圆形渐变、矩形渐变、对角渐变等多种显示效果
![](/icons/17033dou2.gif)
要显示渐变
![](/icons/17033dou.gif)
需使用到RGB 宏
![](/icons/17033dou.gif)
每次使颜色值
![](/icons/17033de.gif)
各颜色分量稍有变化
![](/icons/17033dou2.gif)
B:实现和应用
选择菜单 File | New Application
![](/icons/17033dou.gif)
创建
![](/icons/17033yi.gif)
个新
![](/icons/17033de.gif)
项目文件
![](/icons/17033dou2.gif)
在窗体 Form1 上放置
![](/icons/17033yi.gif)
个 TColorDialog Control控件
![](/icons/17033dou.gif)
然后切换到Unit1.h
![](/icons/17033dou.gif)
在 TForm1
![](/icons/17033de.gif)
private 部分加入两个变量
![](/icons/17033de.gif)
定义
![](/icons/17033dou.gif)
分别用于设置起始颜色和终止颜色
![](/icons/17033dou2.gif)
private: // User declarations
TColor StartColor,EndColor;
然后双击窗体
![](/icons/17033dou.gif)
创建窗体
![](/icons/17033de.gif)
_disibledevent=>
![](/icons/17033if.gif)
(ColorDialog1->Execute
![](/icons/17033kh.gif)
)
EndColor=ColorDialog1->Color;
}
//---------------------------------------------------------------------------
最后创建窗体 Form1
![](/icons/17033de.gif)
_disibledevent=> 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(
![](/icons/17033int.gif)
i=0;i<Width;i
![](/icons/17033jiajia.gif)
)
{
Canvas->Pen->Color=TColor(RGB(redstart+
![](/icons/17033int.gif)
(redinc*i),
greenstart+
![](/icons/17033int.gif)
(greeninc*i),
bluestart+
![](/icons/17033int.gif)
(blueinc*i)));
Canvas->MoveTo(i,0);
Canvas->LineTo(i,Height);
}
}
//---------------------------------------------------------------------------
C:专家点评
![](/icons/17033chengxu.gif)
中设渐变开始
![](/icons/17033de.gif)
颜色为 StartColor
![](/icons/17033dou.gif)
结束
![](/icons/17033de.gif)
颜色为 EndColor
![](/icons/17033dou2.gif)
利用GetRValue、GetGValue、GetBValue
![](/icons/17033hanshu.gif)
分别获得开始颜色
![](/icons/17033de.gif)
红、绿、蓝 3原色分量 redstart greenstart bluestart 和结束颜色
![](/icons/17033de.gif)
3原色红、绿、蓝分量 redend greenend blueend
![](/icons/17033dou2.gif)
如果矩形
![](/icons/17033de.gif)
宽度为 pwidth 象素
![](/icons/17033dou.gif)
则每次变化
![](/icons/17033de.gif)
各颜色分量值应分别为(redend-redstart)/pwidth、(greenend-greenstart)/pwidth、(blueend-bluestart)/pwidth
![](/icons/17033dou.gif)
最后写
![](/icons/17033yi.gif)
个循环
![](/icons/17033dou.gif)
画
![](/icons/17033yi.gif)
系列直线
![](/icons/17033dou2.gif)
这里介绍
![](/icons/17033de.gif)
仅仅是颜色渐变
![](/icons/17033de.gif)
![](/icons/17033yi.gif)
种形式
![](/icons/17033dou.gif)
读者完全可以参照其实现思路方法
![](/icons/17033dou.gif)
改变数学运算
![](/icons/17033dou.gif)
实现如“从上至下逐步加深”、“从左至右逐步加深”等颜色渐变形式
![](/icons/17033dou.gif)
此外
![](/icons/17033dou.gif)
还可以通过画
![](/icons/17033yi.gif)
系列颜色不断变化
![](/icons/17033de.gif)
圆
![](/icons/17033dou.gif)
制作圆形渐变效果
![](/icons/17033dou2.gif)
首先画
![](/icons/17033yi.gif)
个最大
![](/icons/17033de.gif)
圆
![](/icons/17033dou.gif)
然后依次画半径比前
![](/icons/17033yi.gif)
个圆小
![](/icons/17033yi.gif)
个象素
![](/icons/17033de.gif)
圆
![](/icons/17033dou.gif)
然后依次画半径比前
![](/icons/17033yi.gif)
个圆小
![](/icons/17033yi.gif)
个象素
![](/icons/17033de.gif)
圆
![](/icons/17033dou.gif)
同时圆
![](/icons/17033de.gif)
颜色也发生变化
延伸阅读
最新评论