如何获取系统颜色的RGB值?

我一直使用GetRValue,GetGValueGetBValue函数(来自Winapi.Windows单元)来提取TColor.

不幸的是,同样的方法似乎不适用于系统颜色,例如clWindowclBtnFace等等。

例如:

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

乙 = 0

应该是这样的:

在我的系统上,我看到的是以下颜色:

回答

使用Get(R|G|B)Value()系统颜色可以正常工作,您只需要先将它们转换为 RGB。使用该ColorToRGB()功能:

将 TColor 值转换为颜色的 RGB 表示。

例如:

var
  MyColor: TColor;
  RGB: Longint;
begin
  MyColor := ...; // any valid TColor value, whether RGB or system constant...
  RGB := ColorToRGB(MyColor);

  ShowMessage(
    'R = ' + IntToStr(GetRValue(RGB)) + sLineBreak +
    'G = ' + IntToStr(GetGValue(RGB)) + sLineBreak +
    'B = ' + IntToStr(GetBValue(RGB))
  );
end;


以上是如何获取系统颜色的RGB值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>