Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在ncurses中启用32k颜色对?_C++_C_Ubuntu_Ncurses - Fatal编程技术网

C++ 如何在ncurses中启用32k颜色对?

C++ 如何在ncurses中启用32k颜色对?,c++,c,ubuntu,ncurses,C++,C,Ubuntu,Ncurses,我已经了解到ncurses可以支持多达256种颜色和多达32k种颜色对。虽然我自己设置了256种颜色,但我找不到有关如何设置32k颜色对的任何信息 结果 printf("%d - %d\n", COLORS, COLOR_PAIRS); 是 虽然2种颜色和2种颜色对铁杆终端迷来说已经足够了,但我想知道如何从库中获得最多的颜色。课程中的颜色对实际上是前景色和背景色的组合。您可以使用color\u pair(手册页)对其进行操作。有32768种组合,因为前景有256种组合,背景也有相同的组合,但将

我已经了解到ncurses可以支持多达256种颜色和多达32k种颜色对。虽然我自己设置了256种颜色,但我找不到有关如何设置32k颜色对的任何信息

结果

printf("%d - %d\n", COLORS, COLOR_PAIRS);


虽然2种颜色和2种颜色对铁杆终端迷来说已经足够了,但我想知道如何从库中获得最多的颜色。

课程中的颜色对实际上是前景色和背景色的组合。您可以使用
color\u pair
(手册页)对其进行操作。有32768种组合,因为前景有256种组合,背景也有相同的组合,但将红色+蓝色(例如)计算为蓝色+红色,则有256x256/2=32768种组合

然后,您可以使用具有棋盘格图案的前景+背景对(例如
░░░░░░░░░░░░)以产生更多颜色。见例

不过,我认为你的问题中可能存在固有的误解。从手册页面:

此[linux]实现将在尝试使用范围
0
COLORS-1
(默认颜色扩展除外)之外的颜色值时返回
ERR
,或使用范围
0
color\u-1之外的颜色对。


这意味着您只能一次使用
COLOR\u-PAIR
颜色对(即可通过
init\u-PAIR()
使用)-在您的实现上,这是256。但是仍然有32768种颜色对可用-只是不能通过
init\u pair()
一次全部可用。这就是我对它的理解。

默认情况下,ncurses6配置为启用了
--enable ext colors
。您还需要
--启用widec
(否则,不使用存储扩展颜色的
cchar\t
类型)。“配置”脚本会发出以下警告:

checking if you want to use extended colors... yes
configure: WARNING: This option applies only to wide-character library
假设您使用扩展颜色(和宽字符)构建库,它最多可以显示256种颜色和32767种颜色对(有符号16位数字中的最大值)。之后,它取决于您使用的终端描述(以及终端仿真器)。在X窗口中运行的大多数终端模拟器可以显示256色。在X之外,还不清楚是否有多数票

ncurses对每一种都有相当准确的终端描述(不,使用
TERM=xterm-256color
不是每一种的答案,因为特殊键和其他特征通常与xterm不同:常见问题解答也适用于
xterm-256color

这是一个屏幕截图,显示运行宽颜色的
ncurses
测试程序(从)的
xterm


这不是我问的问题。我知道有32k种颜色组合,这不是问题所在。这是一个关于COLOR_PAIRS变量的问题,该变量指定支持多少种不同的颜色对。默认值仅为256,我在某个地方读到它可以设置为32k,但我不知道如何设置。@redspah:请再读一遍这个答案。@LightnessRacesinOrbit让我再解释一遍。这不是关于可能的颜色对本身的问题,而是关于增加缓冲区的大小,该缓冲区容纳使用init_pair()定义的颜色对。现在,它被设置为256,这意味着在任何给定的时间只能定义256个颜色对,尽管您可以自由地重新定义它们,但最多只能定义256个颜色对。我正在寻找一种方法来改变缓冲区的大小,这样就可以同时定义32k个不同的对。无需。这个答案告诉你你需要知道什么。你只需要保持一个开放的心态,在吸收之前扔掉你的错误假设@我猜你的误解是什么&试图改进答案。
checking if you want to use extended colors... yes
configure: WARNING: This option applies only to wide-character library