如何在 ncurses 中重新定义颜色对?

MiJ*_*Jyn 5 c ncurses

标题应该说明一切,所以说我创建了一个像这样的颜色对:

init_pair(1, COLOR_RED, COLOR_BLACK);
Run Code Online (Sandbox Code Playgroud)

然后我想重新定义它,如下所示:

init_pair(1, COLOR_GREEN, COLOR_BLUE);
Run Code Online (Sandbox Code Playgroud)

现在这不起作用,但是还有其他功能可以让我这样做吗?或者,到底有没有函数可以让我只使用显式的前景色/背景色而不使用颜色对?

预先感谢,如果这还不够清楚,请告诉我。


编辑:尝试后,您可以使用重新定义对init_pair,而我的代码中的问题出在其他地方。

Rac*_*len 2

您可以一次定义最多 7 个颜色对,并根据需要按顺序显示所有颜色对。您只需更改号码并刷新即可。例如。(我们将使用 3 来完成)请参阅此处7 的示例的电子打印输出

 #include  <curses.h>

 int COLOR_PAIR (int PAIR_NUMBER)

 init_pair(1, COLOR_GREEN, COLOR_RED);
 init_pair(2, COLOR_GREEN, COLOR_BLUE);
 init_pair(3, COLOR_RED, COLOR_BLUE);

 for (i=1, i <=3, i++){
   attroffset(A_BOLD)
   attrset(COLOR_PAIR(i))
   refresh();
   sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您有很多对,并且第二个颜色始终相同,或者每对中第一个颜色都是唯一的,您可以使用 attron() 打开它,例如 attron(COLOR_PAIR(COLOR_BLUE)); (这在我们的定义中不起作用)

你可以在这里查看 attron 的示例