Inno Setup Pascal Script 有颜色变量,如 Delphi 中的
clBtnFace
、clYellow
。
我想知道如何将这些
TColor
转换为 HTML 十六进制颜色。
例如,如果我将
clBtnFace
转换为 HTML 十六进制颜色,结果应该是 #497AC2
。如果我将 clYellow
转换为 HTML 十六进制颜色,结果应该是 #FFFF00
。
我在上面找到了很多例子,但它们都是针对 RGB 颜色的。我想将
TColor
转换为 HTML 十六进制颜色,以用作我的 Pascal 脚本中 ImageMagick 的命令行参数中的十六进制颜色,如 ...xc:#497AC2...
。
提前致谢。
function ColorToWebColorStr(Color: TColor): string;
var
RGB: Integer;
begin
RGB := ColorToRGB(Color);
Result :=
Format('#%.2x%.2x%.2x', [Byte(RGB), Byte(RGB shr 8), Byte(RGB shr 16)]);
Result := UpperCase(Result);
end;
对于
ColorToRGB
,请参阅将 Inno Setup WizardForm.Color 转换为 RGB。
但请注意,将其与系统颜色(
clXXX
常量)一起使用对于现代主题版本的 Windows 没有什么意义。例如 clBtnFace
将始终返回系统颜色。这与表格的实际颜色无关。每种形式可以有不同的颜色/皮肤。 clBtnFace
始终相同。实际上,即使使用系统皮肤/主题,实际的表单颜色也与现代版本的 Windows 上的 clBtnFace
不同。如果您关闭 Windows 中的主题(即使用经典的 Windows 2000 外观),实际的表单颜色仅为 clBtnFace
。
这是另一种方法:
function TColorToHex(aColor: TColor): String;
begin
var RGB := ColorToRGB(aColor);
Result := '#' +
Byte(RGB).ToHexString +
Byte(RGB shr 8).ToHexString +
Byte(RGB shr 16).ToHexString;
end;