如何給TPanel填充漸變顔色 |
尚未結案
|
zhczm
一般會員 ![]() ![]() 發表:66 回覆:15 積分:16 註冊:2003-06-23 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |