RGB颜色值范围是RGB三元组中每个值的0-255。为什么ncurses将RGB三元组中每个值的范围设置为0-1000?是否有一种简单的方法将0-255范围内的颜色转换为0-1000范围内的颜色,使颜色保持与0-255范围相同?
Curses是从零开始构建的,可以独立于终端,包括您希望使用的任何颜色编码方案。某些终端可能仅提供16种固定的颜色,某些可能是灰度,某些可能严格是黑白色,而有些则可能提供数万种颜色。来自SCO文档(原始的SCO,而不是被开源世界视为叛徒的改名为Caldera):就像curses的其余部分一样,色彩处理例程被设计成与终端无关。但必须记住,终端的功能是不同的。因此,颜色混合能力被认为足够好,可以用于任何你想要的东西,允许亿万不同的混合,然后将其映射到您使用的任何终端的实际能力。因为我肯定看不出#808080和#808081之间的区别 :-)如果你想将Curses的0-1000范围翻译成更“常规”的范围,可以这样做:red = red * 51 / 200; // 51/200 == 255/1000 (而其他颜色组件也是一样)。
最简单的翻译方法就是将其乘以0.255的因子:r = r * 0.255 g = g * 0.255 b = b * 0.255 关于为什么做出这个决定,我认为它完全是随意的,尽管我没有任何事实来支持这一点。