5

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

init_pair(1, COLOR_RED, COLOR_BLACK);

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

init_pair(1, COLOR_GREEN, COLOR_BLUE);

现在这不起作用,但是还有其他功能可以让我这样做吗?或者见鬼,有没有功能可以让我在不使用颜色对的情况下只使用明确的前景色/背景色?

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


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

4

1 回答 1

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);
}

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

您可以在此处查看 attron 的示例

于 2013-02-01T04:56:10.917 回答