我正在学习ncurses,我做了一个小程序,我想用一种颜色填充我的窗口。
我想用红色填充它,但默认COLOR_RED
是明亮并让您发疯:)这是我尝试过的。
WINDOW *wnd = initscr();
start_color();
init_color(COLOR_RED, 184, 142, 12);
init_pair(1, COLOR_WHITE, COLOR_RED);
wbkgd(wnd, COLOR_PAIR(1));
refresh();
如何使用修改后的颜色?
PS:代码使背景仍然是旧的COLOR_RED
,而不是我修改的。
init_color()
是创建颜色定义的方式。但是,只有当您的终端支持 8 种以上的颜色时,您才能创建"新"颜色。大多数终端可以,但默认情况下不启用此功能。要进行检查,请在 ncurses 库中打印 COLORS
变量,如下所示:
#include <ncurses.h>
printw("My terminal supports %d colors.n", COLORS);
如果结果为 8,您将只能修改默认颜色,而不能定义自己的颜色。为了能够定义自己的颜色,您需要使用支持 8 种以上颜色的终端。为此,请在命令行上尝试以下操作:
echo $TERM
如果结果是xterm-color
,则在命令行中键入以下内容以启用 256 色终端:
export TERM=xterm-256color
然后再次检查COLORS
变量。如果一切顺利,它应该更新到 256。现在,您可以使用init_color()
来定义自己的颜色。
有关 ncurses 例程的更多信息可以在这里找到:http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
唯一的答案是 init_color()。只是它在大多数终端上不起作用(即您坚持使用原始颜色)。您可以使用 can_change_color() 检查功能,但这也可能并不总是准确的。