ncurses:为什么RGB颜色值的范围是0-1000?

时间:2015-02-09 01:01:51

标签: c ncurses

RGB三元组中的每个值的RGB颜色值范围为0-255。为什么ncurses为RGB三元组中的每个值设置0-1000的范围?是否有一种简单的方法可以将0-255范围转换为0-1000范围,使颜色保持在0-255范围内?

2 个答案:

答案 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

(和其他颜色组件一样)。