Delphi 如何获取系统颜色的RGB值?
我一直使用Delphi 如何获取系统颜色的RGB值?,delphi,colors,delphi-xe7,systemcolors,Delphi,Colors,Delphi Xe7,Systemcolors,我一直使用GetRValue、GetGValue和GetBValue函数(从Winapi.Windows单元)来提取TColor的RGB值 不幸的是,同样的方法似乎不适合像clWindow、clBtnFace等 例如: var MyColor : TColor; begin MyColor := clBtnFace; ShowMessage( 'R = ' + IntToStr(GetRValue(MyColor)) + sLineBreak + 'G = ' +
GetRValue
、GetGValue
和GetBValue
函数(从Winapi.Windows
单元)来提取TColor
的RGB值
不幸的是,同样的方法似乎不适合像clWindow
、clBtnFace
等
例如:
var
MyColor : TColor;
begin
MyColor := clBtnFace;
ShowMessage(
'R = ' + IntToStr(GetRValue(MyColor)) + sLineBreak +
'G = ' + IntToStr(GetGValue(MyColor)) + sLineBreak +
'B = ' + IntToStr(GetBValue(MyColor))
);
end;
它产生以下输出:
R=15
G=0
B=0
应该是这样的:
在我的系统上,我看到以下颜色:
使用Get(R | G | B)Value()
可以很好地处理系统颜色,您只需先将它们转换为RGB即可。使用以下功能:
将TColor值转换为颜色的RGB表示形式
例如:
var
霉色:TColor;
RGB:Longint;
开始
MyColor:=…;//任何有效的TColor值,无论是RGB还是系统常数。。。
RGB:=色度GB(MyColor);
显示消息(
'R='+IntToStr(GetRValue(RGB))+sLineBreak+
“G=”+IntToStr(GetGValue(RGB))+sLineBreak+
“B=”+IntToStr(GetBValue(RGB))
);
结束;
使用Get(R | G | B)Value()
可以很好地处理系统颜色,只需先将它们转换为RGB即可。使用以下功能:
将TColor值转换为颜色的RGB表示形式
例如:
var
霉色:TColor;
RGB:Longint;
开始
MyColor:=…;//任何有效的TColor值,无论是RGB还是系统常数。。。
RGB:=色度GB(MyColor);
显示消息(
'R='+IntToStr(GetRValue(RGB))+sLineBreak+
“G=”+IntToStr(GetGValue(RGB))+sLineBreak+
“B=”+IntToStr(GetBValue(RGB))
);
结束;
你知道的!:)@安德烈亚斯雷杰布兰德:看来你是对的,一个月前我是一个多么聪明的人啊D(我可能从某个地方复制了它,却不知道ColorToRGB
正在“解析”系统颜色,这是我的错!)你知道的!:)@安德烈亚斯雷杰布兰德:看来你是对的,一个月前我是一个多么聪明的人啊D(我可能从某个地方复制了它,却不知道ColorToRGB
正在“解决”系统颜色,这是我的错!)