2016-08-18 80 views
0

Inno Setup的Pascal脚本有颜色变量,如clBtnFaceclYellow在Delphi。转换Inno Setup的Pascal脚本TColor到HTML十六进制颜色

我想知道我怎么可以把其中任何TColor到HTML十六进制颜色。

例如,如果我将clBtnFace转换为HTML十六进制颜色,结果应该是#497AC2。如果我将clYellow转换为HTML十六进制颜色,结果应该是#FFFF00

我发现许多例子以上,但他们的RGB颜色。我想TColor转换为HTML 十六进制颜色如在我的Pascal脚本像...xc:#497AC2...命令行参数ImageMagick的十六进制颜色使用。

在此先感谢。

回答

1
function ColorToWebColorStr(Color: TColor): string; 
var 
    RGB: Integer; 
begin 
    RGB := ColorToRGB(Color); 
    Result := 
    UpperCase(Format('#%.2x%.2x%.2x', [Byte(RGB), Byte(RGB shr 8), Byte(RGB shr 16)])); 
end; 

对于ColorToRGB,看到Converting Inno Setup WizardForm.Color to RGB

+0

它运作良好,但我想不通为什么我收到'#F0F0F0 - (Gray94)'甚至我DataChecker.Colour'(TForm的)'已被设置为'clBtnFace'。灰色是默认的按钮脸部颜色。但我使用的是ISSkin,我的Button Face Color应该返回为'#497AC2 - (半浅蓝色)'.........但是为什么我会得到默认颜色? – Blueeyes789

+0

'clBtnFace'将始终返回系统颜色。它与表单的实际颜色无关。每个表单可以有不同的颜色/皮肤。 clBtnFace总是一样的。实际上,即使使用系统皮肤/主题,在现代版本的Windows上,实际的表单颜色也不同于“clBtnFace”。如果您关闭Windows中的主题(即使用传统的Windows 2000外观),实际的表单颜色仅为“clBtnFace”。 –

+0

好的Thx为答复...... :-) – Blueeyes789

相关问题