有 64 種顏色如何以漸層方式排列? |
答題得分者是:richtop
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
小弟在 Form1 上放了 64 個 TPanel
其 Name 屬性分別為 Panel1 ~ Panel64
小弟用如下的方式在這些 TPanel 上顯示 64 種不同的顏色
請問一下大家, 有沒辦法將這些顏色以漸層的方式排列?
function GetColor(AColorByte: Byte): TColor; var r,g,b: Byte; begin r := 0; if (AColorByte and $01 <> $01) and (AColorByte and $02 <> $02) then r := 0; if (AColorByte and $01 = $01) and (AColorByte and $02 <> $02) then r := 127; if (AColorByte and $01 <> $01) and (AColorByte and $02 = $02) then r := 191; if (AColorByte and $01 = $01) and (AColorByte and $02 = $02) then r := 255; g := 0; if (AColorByte and $04 <> $04) and (AColorByte and $08 <> $08) then g := 0; if (AColorByte and $04 = $04) and (AColorByte and $08 <> $08) then g := 127; if (AColorByte and $04 <> $04) and (AColorByte and $08 = $08) then g := 191; if (AColorByte and $04 = $04) and (AColorByte and $08 = $08) then g := 255; b := 0; if (AColorByte and $10 <> $10) and (AColorByte and $20 <> $20) then b := 0; if (AColorByte and $10 = $10) and (AColorByte and $20 <> $20) then b := 127; if (AColorByte and $10 <> $10) and (AColorByte and $20 = $20) then b := 191; if (AColorByte and $10 = $10) and (AColorByte and $20 = $20) then b := 255; Result := RGB(r, g, b); end; procedure TForm1.FormCreate(Sender: TObject); const RGB_COLOR_CAPTION = '%d: (%d, %d, %d)'; var i: integer; r,g,b: Byte; pnl: TPanel; begin for i := 1 to 64 do begin pnl := FindComponent('Panel' IntToStr(i)) as TPanel; pnl.OnClick := PanelClick; pnl.Color := GetColor(i-1); r := GetRValue(pnl.Color); g := GetGValue(pnl.Color); b := GetBValue(pnl.Color); pnl.Caption := Format(RGB_COLOR_CAPTION, [i, r, g, b]); end; Panel1.Font.Color := clWhite;-- |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
hagar 您好: 覺得這問題很有趣! 我嘗試用顏色對應的灰階值來排序,似乎有點樣子,不知對您有沒有幫助?
程式如下連結,您參考一下囉!
< href="http://delphi.ktop.com.tw/loadfile.php?TOPICID=21145354&CC=472906">http://delphi.ktop.com.tw/loadfile.php?TOPICID=21145354&CC=472906 RichTop 敬上 =====*****
把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題!
=====#####
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |