RGB三元组中的每个值的RGB颜色值范围为0-255。为什么ncurses为RGB三元组中的每个值设置0-1000的范围?是否有一种简单的方法可以将0-255范围转换为0-1000范围,使颜色保持在0-255范围内?
答案 0 :(得分:0)
最简单的翻译就是将它乘以.255:
r = r * 0.255
g = g * 0.255
b = b * 0.255
至于为什么做出这个决定,我怀疑这完全是武断的,尽管我没有任何事实支持这一点。
答案 1 :(得分:0)
Curses从头开始构建 ,与终端无关,包含您希望使用的任何颜色编码方案。有些终端可能只提供16种固定颜色,有些可能是灰度,有些可能是严格的黑白,有些可能提供数万亿种颜色。
来自SCO documentation(原始 SCO,而非重新命名的Caldera成为开源世界的贱民):
与其余的curses一样,颜色操作例程被设计为终端独立。但必须记住,终端的能力各不相同。
因此,颜色混合能力被认为足以满足你可以投入的任何东西,允许十亿种不同的混合物,然后可以映射到任何终端的实际能力你正在使用。
我是一个人,当然不能说出#808080
和#808081
之间的区别: - )
如果你想将0-1000
范围的诅咒翻译成更多"常规"范围,您可以执行以下操作:
red = red * 51 / 200; // 51/200 == 255/1000
(和其他颜色组件一样)。