使用API函數GetRValue,GetBValue及GetGValue。這裡有一個以析取紅綠藍來改變窗口背景色的例子。(注意:在使用下面的例子代碼前,請將窗口的Color設為clBlue,clNavy或其它任何一種非系統顏色,諸如clBtnFace)
void __fastcall TForm1::Button1Click(TObject *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風格的宏。你可以在Include\Win32\wingdi.h中看到它們的實現。使用宏的一個結果是:函數不是類型安全的。你可以將char *傳給宏而不會得到任何警告。