C-使用ncurses获得中性背景

在这个简单的程序中(用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;
}
上一篇:如何在不清除背景的情况下弹出ncurses小部件?


下一篇:如何读取不完整的表单字段ncurses C