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

时间:2013-02-01 04:31:20

标签: c ncurses

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

init_pair(1, COLOR_RED, COLOR_BLACK);

然后我想重新定义它,就像这样:

init_pair(1, COLOR_GREEN, COLOR_BLUE);

现在这不起作用,但有没有其他功能允许我这样做?或者说,是否有功能,以便我可以使用显式的前景/背景颜色而不使用颜色对?

提前致谢,如果不够明确,请告诉我。


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

1 个答案:

答案 0 :(得分:1)

您可以一次最多定义7个颜色对,如果您愿意,可以按顺序显示它们。您只需更改数字并刷新即可。例如。 (我们将用3执行)有关7

的示例的打印输出,请参阅here
 #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);
}

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

您可以查看attron here

的示例