|
使用API函数GetRValue,GetBValue及GetGValue。这里有一个以析取红绿蓝来改变窗口背景色的例子。(注意:在使用下面的例子代码前,请将窗口的Color设为clBlue,clNavy或其它任何一种非系统颜色,诸如clBtnFace) ) }# K0 p7 j. }% d$ [
void __fastcall TForm1::Button1Click(TObject *Sender)
! _2 x7 T/ m5 X2 f3 T0 u{
/ y0 ]# [1 j- [" j5 N BYTE nRed = GetRValue(Color);/ V8 f* f' L2 L9 N( w; f) D$ V
BYTE nBlue = GetBValue(Color);7 h6 O8 X' |- o
BYTE nGreen = GetGValue(Color);
/ U) W$ O# W8 T& h$ S4 { 1 `1 c% |/ _5 w7 w
nRed +=10;
* x" b- Y) O' n nBlue -=10;% ?- U- N' J7 A8 ?) j/ \( J( ~# m$ |
nGreen *= 1.05;
- g# p2 p) n0 \, J5 R% J& p% g Color =(TColor) RGB(nRed, nGreen, nBlue);
; d: ~( |! _* K# b8 L; ^ i0 g2 { }6 h. c. a$ b; l' I3 V
注意:Get系列函数返回一个0~255的亮度值。因为单个亮度值为一个字节所以返回类型为BYTE。当你把亮度值设为小于0或大于255时,RGB宏将截去多余的字节(它只取低8位) 。
# _5 r, s1 j" S, K5 O注意:从技术上讲,这三个Get函数实际上不是函数,它们是C风格的宏。你可以在Include\Win32\wingdi.h中看到它们的实现。使用宏的一个结果是:函数不是类型安全的。你可以将char *传给宏而不会得到任何警告。 |