标题应该说明一切,所以说我创建了一个这样的颜色对:
init_pair(1, COLOR_RED, COLOR_BLACK);
然后我想重新定义它,就像这样:
init_pair(1, COLOR_GREEN, COLOR_BLUE);
现在这不起作用,但有没有其他功能允许我这样做?或者说,是否有功能,以便我可以使用显式的前景/背景颜色而不使用颜色对?
提前致谢,如果不够明确,请告诉我。
编辑:尝试后,您可以使用init_pair
重新定义对,而我的代码中的问题则在其他地方。
答案 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
的示例