C++窗体渐变背景的实现方法
【IT168技术文档】
这种奇特的视觉效果制作起来相当简单,只需将屏幕分成许多行,每一行显示不同的颜色就可以了。渐变图形可以有许多种形式,有圆形渐变、矩形渐变、对角渐变等多种显示效果。要显示渐变,需使用到RGB 宏,每次使颜色值的各颜色分量稍有变化,中国自学编程网,www.zxbc.cn 。
B:实现与应用
选择菜单 File | New Application,创建一个新的项目文件。在窗体 Form1 上放置一个 TColorDialog 控件,然后切换到Unit1.h,在 TForm1 的 private 部分加入两个变量的定义,分别用于设置起始颜色和终止颜色。
private: // User declarationsTColor StartColor,EndColor;
然后双击窗体,创建窗体的 OnCreate 事件处理函数,在其中加入如下代码,用于让用户选择起始颜色和结束颜色。
//---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender) { if(ColorDialog1->Execute()) StartColor=ColorDialog1->Color; if(ColorDialog1->Execute()) EndColor=ColorDialog1->Color; } //---------------------------------------------------------------------------
最后创建窗体 Form1 的 OnPaint 事件处理函数,在其中加入如下代码,用稍有变化的颜色值画一系列的垂直线,达到渐变的效果。
//---------------------------------------------------------------------------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;i
查看评论 回复