您现在的位置: 主页 > 嵌入式软件 > C/C++ > C++窗体渐变背景的实现方法
本文所属标签:
为本文创立个标签吧:

C++窗体渐变背景的实现方法

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-09-04 

【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;iPen->Color=TColor(RGB(redstart+int(redinc*i), greenstart+int(greeninc*i), bluestart+int(blueinc*i))); Canvas->MoveTo(i,0); Canvas->LineTo(i,Height); } } //---------------------------------------------------------------------------



              查看评论 回复



嵌入式交流网主页 > 嵌入式软件 > C/C++ > C++窗体渐变背景的实现方法
 颜色 渐变

网站地图

围观()