gpt4 book ai didi

delphi TColor 格式 负片

转载 作者:行者123 更新时间:2023-12-03 23:11:47 27 4
gpt4 key购买 nike

希望是一个简单的问题,但我找不到答案。我正在使用 Delphi TColor 并且某些颜色值为负值。这有记录吗?我需要做一些颜色转换,例如到 RGB。

例如:Label.Color=-16777188;//淡蓝色

谢谢

最佳答案

负值不是实际的 RGB 颜色,而是可变的 Windows 系统颜色。

例如,以下是实际的 RGB 颜色:

clRed   = $000000FF; {00BBGGRR}
clBlue = $00FF0000;
clWhite = $00FFFFFF;
clBlack = $00000000;

以下是一些系统颜色:
clWindow        = $FF000005;
clWindowText = $FF000008;
clHighlight = $FF00000D;
clActiveCaption = $FF000002;

这些不是实际的 RGB 值,而是代表您的系统颜色。通常, clWindow是白色的, clWindowText是黑色的, clHighlight是某种蓝色等,但是 - 再次 - 这些设置可以在 Windows 中更改。

当这些 32 位整数被解释为有符号 32 位整数时,它们变为负数。这就是你所看到的:
clWindow        = -16777211;
clWindowText = -16777208;
clHighlight = -16777203;
clActiveCaption = -16777214;

所以在你的情况下, -16777188 不能保证是“浅蓝色”。在十六进制中,此值为 $FF00001C我认为这是 clGradientInactiveCaption ,即非事件非主题(Windows 9x 风格)窗口标题栏的第二个渐变颜色。

如您所知,在 VCL 中,您可以像使用实际颜色一样使用这些系统颜色。但是——当然——你得到的实际颜色可能因用户而异。

您可以使用 ColorToRGB 从此类系统颜色中获取实际的 RGB 颜色。功能。在我的系统上, ColorToRGB(clGradientInactiveCaption)产量 $00F2E4D7 (确实是浅蓝色)。

关于delphi TColor 格式 负片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62263083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com