我正在学习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();
如何使用修改过的颜色?
P.S:代码使背景仍然是旧COLOR_RED
,而不是我修改后的。{/ p>
答案 0 :(得分:2)
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
答案 1 :(得分:0)
唯一的答案是init_color()。只是它不能在大多数终端上工作(即你已经被原始颜色困住了)。您可以使用can_change_color()检查该功能,但这可能并不总是准确的。