如何在ncurses中使用超过8种颜色?

3

我刚开始在Linux上使用ncurses。我想使用超过8种颜色,但只有8种可用。

我该如何使用更多颜色,或者通过给它们命名并设置RGB值来创建自己的颜色?

我尝试使用init_color编辑颜色,但这只会替换当前8种颜色之一,而不是创建新的颜色。

注意:全局变量COLORS的值为256,因此我相信我最多可以使用256种不同的颜色。


init_color(COLOR_RED, 700, 0, 0); http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html初始化颜色(COLOR_RED, 700, 0, 0); http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html - user3528438
我猜你可以自由地将颜色8到颜色255定义为这种方式。 - user3528438
3
常量COLOR_PAIRS定义了系统允许的颜色对数。请参见http://pubs.opengroup.org/onlinepubs/7908799/xcurses/can_change_color.html。你可以在init_color中使用自己的数字来定义新的颜色。例如,init_color(9, 800, 700, 600); - mikeyq6
这正是我想要的。 我不知道我可以设置自己的数字。 谢谢大家。 - Raouf Jacker
@mikeyq6,你应该把你的评论发布为答案,这正是我在寻找的。 - gsgx
2个回答

2
如果您的终端支持,应该选择(或自定义)具有超过8种颜色的终端描述。目前,存在许多现有的终端描述可以使用:大多数是针对特定终端(或终端仿真器)定制的。
如果您的终端支持,相应的描述将具有initc功能。这由库调用init_color使用。例如,xterm-256color条目就有这个功能。
initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,

它告诉库如何将三个参数转换为转义序列。终端条目是从可重用的部分构建的,例如xterm+256color,因为某些终端缺少您感兴趣的功能。对于这些终端,xterm+256setaf 是合适的。
参考资料:

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接