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

如何給TPanel填充漸變顔色

尚未結案
zhczm
一般會員


發表:66
回覆:15
積分:16
註冊:2003-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-17 14:54:16 IP:211.152.xxx.xxx 未訂閱
開始顔色和結尾顔色有變數給定,請高手賜教範例程序
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-17 22:18:19 IP:61.62.xxx.xxx 未訂閱
hello, 比較簡單的作法是放一個 TImage 在該 Panel 上, 並設為 alClient, 然後利用 Image 的 Canvas 來進行漸層色的填充即可, 程式如下:    
    procedure TForm1.FormCreate(Sender: TObject);
var
  cStart, cEnd, cTemp, cSR, cSG, cSB, cER, cEG, cEB: TColor;
  i, ir, ig, ib: integer;
  width: double;
begin
  cStart := clRed;
  cEnd := clBlue;
  cSR := cStart and $000000FF;
  cSG := cStart and $0000FF00 shr 8;
  cSB := cStart and $00FF0000 shr 16;
  cER := cEnd and $000000FF;
  cEG := cEnd and $0000FF00 shr 8;
  cEB := cEnd and $00FF0000 shr 16;
  ir := (cER - cSR) div 100;
  ig := (cEG - cSG) div 100;
  ib := (cEB - cSB) div 100;
  width := Image1.Width / 100;
  for i := 0 to 99 do
  begin
    Image1.Canvas.Brush.Color := (cSR   ir * i) or ((cSG   ig * i) shl 8) or ((cSB   ib * i) shl 16);
    Image1.Canvas.FillRect(Rect(Round(i*width),0,Round((i 1)*width), Image1.Height));
  end;    end;
系統時間:2024-06-29 13:07:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!