改变颜色定义ncurses C.

时间:2014-12-24 22:29:58

标签: c colors ncurses

我正在学习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>

2 个答案:

答案 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()检查该功能,但这可能并不总是准确的。