【问题标题】:ncurses: Why is the RGB color value range from 0 - 1000?ncurses:为什么 RGB 颜色值范围是 0 - 1000?
【发布时间】:2015-02-09 01:01:51
【问题描述】:

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

【问题讨论】:

    标签: c ncurses


    【解决方案1】:

    Curses 从头开始构建 独立于终端,并且包括您希望使用的任何颜色编码方案。有些终端可能只提供十六种固定颜色,有些可能是灰度,有些可能是严格的黑白,有些可能提供数万亿种颜色。

    来自SCO documentation原始 SCO,而不是成为开源世界贱民的重命名的 Caldera):

    与其他 curses 一样,颜色处理例程被设计为独立于终端。但必须记住,终端的功能各不相同。

    因此,颜色混合能力对于你可以投入的任何东西都被认为是足够好的,允许十亿种不同的混合,然后可以映射到你正在使用的任何终端的实际能力.

    一方面,我当然无法区分 #808080#808081 :-)

    如果您想将 Curses 的 0-1000 范围转换为更“常规”的范围,您可以执行以下操作:

    red = red * 51 / 200;  // 51/200 == 255/1000
    

    (其他颜色成分也是如此)。

    【讨论】:

      【解决方案2】:

      最简单的翻译就是乘以 0.255 倍:

      r = r * 0.255
      g = g * 0.255
      b = b * 0.255
      

      至于为什么做出这个决定,我怀疑这完全是武断的,尽管我没有任何事实支持。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        • 2018-06-02
        • 1970-01-01
        • 2018-03-30
        • 2014-10-11
        • 2019-01-12
        相关资源
        最近更新 更多