更改颜色定义会诅咒 C



我正在学习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() 检查功能,但这也可能并不总是准确的。

最新更新