全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2848
推到 Plurk!
推到 Facebook!

請問誰有用bcb寫的背景漸層

尚未結案
bcb902146
一般會員


發表:67
回覆:33
積分:22
註冊:2002-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-23 21:15:22 IP:61.70.xxx.xxx 未訂閱
請問誰有用bcb寫的背景漸層 誰可以交我寫 劉維翔
------
劉維翔
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-04 04:13:21 IP:61.30.xxx.xxx 未訂閱
實現窗體的漸變背景 (引用對岸文章) 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;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:專家點評 程序中設漸變開始的顏色為 StartColor,結束的顏色為 EndColor。利用 GetRValue、GetGValue、GetBValue 函數分別獲得開始顏色的紅、綠、藍三原色分量 redstart greenstart bluestart 和結束顏色的三原色紅、綠、藍分量 redend greenend blueend。如果矩形的寬度為 pwidth 象素,則每次變化的各顏色分量值應分別為(redend-redstart)/pwidth、(greenend-greenstart)/pwidth、(blueend-bluestart)/pwidth,最後寫一個循環,畫一系列直線。 這里介紹的僅僅是顏色漸變的一種形式,讀者完全可以參照其實現方法,改變數學運算,實現如“從上至下逐步加深”、“從左至右逐步加深”等顏色漸變形式,此外,還可以通過畫一系列顏色不斷變化的圓,制作圓形漸變效果。首先畫一個最大的圓,然後依次畫半徑比前一個圓小一個象素的圓,然後依次畫半徑比前一個圓小一個象素的圓,同時圓的顏色也發生變化。
------
--==多看.多學.多聽==--
系統時間:2024-04-20 13:10:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!