我正在修改 .ini 设置文件以更改 Windows 应用程序的颜色。
现有的颜色全部用十进制整数表示,范围从-16777201至536870911。
显然,这些值不仅仅是 RGB 或 HSL。我几乎可以肯定它们是转换为十进制的十六进制 16 位 RGB 字,但负值让我有点困惑。此外,RGB 似乎可能被反转为 BGR。
可能使用什么数字方案来表示颜色?
该应用程序是闭源的,我不确定它是用哪种编程语言创建的。我想可能是 Delphi。
(顺便说一句,也欢迎提供任何基于网络的工具链接,用于将这些值转换为 RGB 或从 RGB 转换为 RGB !)
答案1
转换为十六进制电源外壳
此代码将定义一个名为解析颜色. 应该使侦探工作变得简单:
Function Parse-Color {
param(
[Parameter(Mandatory,
ValueFromPipeline)]
[Int32[]]
$IniColor
)
Process { FOrEach ( $Color in $IniColor ) {
$Hex = '{0:X8}' -f $Color
[PSCustomObject]@{
Int32 = $_
Hex = '0x{0}' -f $Hex
Byte0 = -join $Hex[6,7] # Change these labels
Byte1 = -join $Hex[3,5] # to the channel
Byte2 = -join $Hex[2,3] # namee as they're
Byte3 = -join $Hex[0,1] # determined.
}
}
}}
If ( -not ( Get-Alias pc -ea silent )) {
Set-Alias pc Parse-Color
}
然后通过管道调用:
-16777201, 536870911 | Parse-Color | Format-Table
得出的结果是:
PS C:\> -16777201, 536870911 | Parse-Color | Format-Table
Int32 Hex Byte0 Byte1 Byte2 Byte3
----- --- ----- ----- ----- -----
-16777201 0xFF00000F 0F 00 00 FF
536870911 0x1FFFFFFF FF FF FF 1F
PS C:\>
最可能的嫌疑:带有 Alpha 通道的 RGB 颜色
不太可能:CMYK
编辑:将 Parse-Color 添加到配置文件。
选项1)Down & Difty:直接将代码添加到配置文件中:
- 将上述功能代码复制到剪贴板。
- 键入:
Get-Clipboard | Add-Content $PROFILE
或gcb | ac $PROFILE
- 启动新的 PS 会话来验证该功能是否已添加。
选项 2)另存为 .ps1 文件并从配置文件中点源。
将代码复制到剪贴板
类型:
$code = gcb
类型:`$path = 'c:\Some\path\filename.ps1'
类型:
sc $path $code
类型:
ac $Profile ". $Path"