單一顏色如何作1.淡化,2.亮度調整,3.對比調整? |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
我可以說一些方法供你參考
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |