在这个简单的程序中(用C编写)
#include <ncurses.h>
#include <string.h>
int main()
{
initscr();
printw("line 1\n");
printw("line 2\n");
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
printw("line 3");
getch();
endwin();
return 0;
}
屏幕上黑色背景上会打印一个红色文本.但是,当我运行该程序时,在Linux(Gnome终端)中,背景要比终端的黑色背景略亮.
我不想在终端的默认黑色上设置背景色:我想保留终端背景,而实际上将ncurses背景设置为透明.
有没有办法做到这一点?
注意:我试图将功能use_default_colors();在start_color()之后;如this问题中所建议,但这没有用.
解决方法:
来自man init_pair:
As an extension, ncurses allows you to set color pair 0 via
the assume_default_colors routine, or to specify the use of default
colors (color number -1) if you first invoke the use_default_colors routine.
因此,通常,如果要使用“默认”颜色,请使用-1作为颜色值,但请确保先调用use_default_colors().
#include <ncurses.h>
#include <string.h>
int main()
{
initscr();
use_default_colors();
printw("line 1\n");
printw("line 2\n");
start_color();
init_pair(1, COLOR_RED, -1);
printw("line 3");
getch();
endwin();
return 0;
}