bcb 從TColor物件中解析出紅、綠、藍的亮度 (轉)

worldblog發表於2007-12-05
bcb 從TColor物件中解析出紅、綠、藍的亮度 (轉)[@more@]

從TColor中解析出紅、綠、藍的亮度

使用GetRValue,GetBValue及GetGValue。這裡有一個以析取紅綠藍來改變視窗背景色的例子。(注意:在使用下面的例子程式碼前,請將視窗的Color設為clBlue,clNavy或其它任何一種非顏色,諸如clBtnFace)

void __fastcall TForm1::Button1Click(T *Sender) { BYTE nRed = GetRValue(Color); BYTE nBlue = GetBValue(Color); BYTE nGreen = GetGValue(Color);   nRed +=10; nBlue -=10; nGreen *= 1.05; Color =(TColor) RGB(nRed, nGreen, nBlue); }


注意:Get系列函式返回一個0~255的亮度值。因為單個亮度值為一個位元組所以返回型別為BYTE。當你把亮度值設為小於0或大於255時,RGB宏將截去多餘的位元組(它只取低8位)

注意:從技術上講,這三個Get函式實際上不是函式,它們是C風格的宏。你可以在Includewingdi.h中看到它們的實現。使用宏的一個結果是:函式不是型別的。你可以將char *傳給宏而不會得到任何警告。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988702/,如需轉載,請註明出處,否則將追究法律責任。

相關文章