【发布时间】:2017-12-01 03:33:06
【问题描述】:
好吧,这可能是一个愚蠢的问题,但我正在编辑一个用 delphi 编写的 dll,并想更改一些颜色定义,但我无法弄清楚颜色是用什么格式写入的。例如:
99999999 -> 是亮粉色
55555555 -> 是橙色
15663114 -> 蓝色
3496 -> 深红色
0 -> 黑色
有些颜色是用 7 位数字定义的:
【问题讨论】:
好吧,这可能是一个愚蠢的问题,但我正在编辑一个用 delphi 编写的 dll,并想更改一些颜色定义,但我无法弄清楚颜色是用什么格式写入的。例如:
99999999 -> 是亮粉色
55555555 -> 是橙色
15663114 -> 蓝色
3496 -> 深红色
0 -> 黑色
有些颜色是用 7 位数字定义的:
【问题讨论】:
这是 BGR 格式。最低有效字节是红色通道的强度,下一个有效字节是绿色通道,然后是蓝色。
查看值的十六进制表示会更容易理解,因为可以轻松地将值分解为三个通道。考虑小数15663114,你说它是深蓝色。转换为十六进制是EF000A。颜色通道具有以下强度:
其他颜色值可以用类似的方式理解。
现在,可能还有一个 Alpha 通道来表示透明度级别。这将是 4 个字节中最重要的。您引用的值99999999 是十六进制的05F5E0FF。这将具有05 的 alpha 值。是否尊重该通道取决于解释颜色值的代码。
【讨论】:
EF 的蓝色值并不暗,实际上几乎是完全蓝色的。但是如果 alpha = 0,那么它根本看不到,所以我怀疑 alpha 值在那里起作用。