delphi TColor格式底片
delphi TColor format Negative
希望这是一个简单的问题,但我找不到答案。我正在使用 Delphi TColor 并且一些颜色值为负。这有记录吗?我需要做一些颜色转换,例如,到 RGB。
例如:Label.Color=-16777188; //浅蓝色
谢谢
Delphi 定义 Windows 系统颜色,如
SysGradientInactiveCaption = TColor(SystemColor or cGRADIENTINACTIVECAPTION);
与
SystemColor = $FF000000;
和
cGRADIENTINACTIVECAPTION = 28;
结果为 -16777188。
这些常量可以在 System.UITypes.pas 的 TColorRec
下找到。
负值不是实际的 RGB 颜色,而是 Windows 可变的系统颜色。
例如,以下是实际的 RGB 颜色:
clRed = [=10=]0000FF; {00BBGGRR}
clBlue = [=10=]FF0000;
clWhite = [=10=]FFFFFF;
clBlack = [=10=]000000;
以下是一些系统颜色:
clWindow = $FF000005;
clWindowText = $FF000008;
clHighlight = $FF00000D;
clActiveCaption = $FF000002;
这些不是实际的 RGB 值,而是代表您的系统颜色。通常,clWindow
是白色,clWindowText
是黑色,clHighlight
是某种蓝色等等,但是——同样——这些设置可以在 Windows 中更改。
当这些 32 位整数被解释为 有符号 32 位整数时,它们变为负数。这就是您所看到的:
clWindow = -16777211;
clWindowText = -16777208;
clHighlight = -16777203;
clActiveCaption = -16777214;
所以在你的情况下,-16777188 不能保证是 "light bluish"。在十六进制中,此值为 $FF00001C
,我将其识别为 clGradientInactiveCaption
,即非活动无主题(Windows 9x 样式)window 标题栏的第二种渐变颜色。
如您所知,在 VCL 中,您可以像使用实际颜色一样使用这些系统颜色。但是——当然——您获得的实际颜色可能因用户而异。
您可以使用 ColorToRGB
函数从这样的系统颜色中获取实际的 RGB 颜色。在我的系统上,ColorToRGB(clGradientInactiveCaption)
产生 [=20=]F2E4D7
(确实是浅蓝色)。
希望这是一个简单的问题,但我找不到答案。我正在使用 Delphi TColor 并且一些颜色值为负。这有记录吗?我需要做一些颜色转换,例如,到 RGB。
例如:Label.Color=-16777188; //浅蓝色
谢谢
Delphi 定义 Windows 系统颜色,如
SysGradientInactiveCaption = TColor(SystemColor or cGRADIENTINACTIVECAPTION);
与
SystemColor = $FF000000;
和
cGRADIENTINACTIVECAPTION = 28;
结果为 -16777188。
这些常量可以在 System.UITypes.pas 的 TColorRec
下找到。
负值不是实际的 RGB 颜色,而是 Windows 可变的系统颜色。
例如,以下是实际的 RGB 颜色:
clRed = [=10=]0000FF; {00BBGGRR}
clBlue = [=10=]FF0000;
clWhite = [=10=]FFFFFF;
clBlack = [=10=]000000;
以下是一些系统颜色:
clWindow = $FF000005;
clWindowText = $FF000008;
clHighlight = $FF00000D;
clActiveCaption = $FF000002;
这些不是实际的 RGB 值,而是代表您的系统颜色。通常,clWindow
是白色,clWindowText
是黑色,clHighlight
是某种蓝色等等,但是——同样——这些设置可以在 Windows 中更改。
当这些 32 位整数被解释为 有符号 32 位整数时,它们变为负数。这就是您所看到的:
clWindow = -16777211;
clWindowText = -16777208;
clHighlight = -16777203;
clActiveCaption = -16777214;
所以在你的情况下,-16777188 不能保证是 "light bluish"。在十六进制中,此值为 $FF00001C
,我将其识别为 clGradientInactiveCaption
,即非活动无主题(Windows 9x 样式)window 标题栏的第二种渐变颜色。
如您所知,在 VCL 中,您可以像使用实际颜色一样使用这些系统颜色。但是——当然——您获得的实际颜色可能因用户而异。
您可以使用 ColorToRGB
函数从这样的系统颜色中获取实际的 RGB 颜色。在我的系统上,ColorToRGB(clGradientInactiveCaption)
产生 [=20=]F2E4D7
(确实是浅蓝色)。