線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1701
推到 Plurk!
推到 Facebook!

單一顏色如何作1.淡化,2.亮度調整,3.對比調整?

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-25 16:44:35 IP:61.218.xxx.xxx 未訂閱
請教各位前輩?? 單一顏色如 $0080FF00 如何作1.淡化,2.亮度調整,3.對比調整 如有兩個顏色如 $0080FF00 , $00FF80FF 如何作兩種顏色重疊後的顏色 謝謝各位前輩,這真是個好地方,感謝站長..........
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-25 22:34:39 IP:219.133.xxx.xxx 未訂閱
我可以說一些方法供你參考    
var
   OldColor , NewColor : TColor ; // TCOLOR其實是Integer
   R1,G1,B1 ,R2,G2,B2 : BYTE;
   lvalue,bvalue : WORD;
begin
  OldColor:=Form1.color;  // 假設我想把form1的背景色改變一下      R1:=ord(OldColor and $000000FF);          //紅色變量
  G1:=ord(OldColor and $0000FF00)shr 8;     //綠色變量
  B1:=ord(OldColor and $00FF0000)shr 16;    //藍色變量
取出三原色後 1、淡化(向白淡化=對比) bvalue := 150 ; // 0~255 對比值 R2:=ROUND((R1/$FF)*bvalue) OR ROUND($FF-bvalue); G2:=ROUND((G1/$FF)*bvalue) OR ROUND($FF-bvalue); B2:=ROUND((B1/$FF)*bvalue) OR ROUND($FF-bvalue); NewColor:=R2 or (G2 shl 8) or (B2 shl 16); 2、亮度調整(向黑淡化=亮度) lvalue := 5 ; // 亮度值 1~32 R2:=(R1 * lvalue) shr 5; G2:=(G1 * lvalue) shr 5; B2:=(B1 * lvalue) shr 5; NewColor:=R2 or (G2 shl 8) or (B2 shl 16); 用 Form1.color:=NewColor ; 取得新的顏色值並直接反應在form1上 如果你想把圖案變亮變暗,你最好別用pixels來取值,因為速度超慢,建議用scanline,速度真的快很多 藏私の禁止 發表人 - japhenchen 於 2004/06/25 22:36:59
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-25 22:36:12 IP:219.133.xxx.xxx 未訂閱
二色重疊?粉簡單啊,用or這個運算元就可以搞定 newcolor:= $0080FF00 or $00FF80FF ; 藏私の禁止
系統時間:2024-05-06 3:27:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!