請問誰有用bcb寫的背景漸層 |
尚未結案
|
bcb902146
一般會員 發表:67 回覆:33 積分:22 註冊:2002-07-20 發送簡訊給我 |
|
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
實現窗體的漸變背景 (引用對岸文章)
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 事件處理函數,在其中加入如下代碼,用稍有變化的顏色值畫一系列的垂直線,達到漸變的效果。 //---------------------------------------------------------------------------
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
------
--==多看.多學.多聽==-- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |