【问题标题】:Use black instead of grey with ncurses colors on Gnome Terminal Ubuntu Gnome 14.04在 Gnome Terminal Ubuntu Gnome 14.04 上使用黑色而不是灰色和 ncurses 颜色
【发布时间】:2022-01-25 01:15:37
【问题描述】:

如果我使用 use_default_colors() 函数,当我 start_color() 终端的背景颜色不再是灰色,而是黑色(我在配置文件首选项中设置的相同),这就是我想要的,因为我不像灰色。问题是当我打印有颜色的东西时,我打印的字符的背景颜色仍然是相同的灰色。 如果我不使用 use_default_colors() 函数,这并不明显,因为一切都是灰色的。 但是如果我使用它,您可以清楚地看到它。查看屏幕

有没有办法通过便携代码去除这个灰色并让它变黑?我希望其他人看到我设置的相同颜色。出于这个原因,无论如何我都不应该使用 use_default_colors() ,或者我可以使用它并使用 bkgd() 手动更改背景颜色;但我有同样的问题。 COLOR_BLACK 实际上并不是黑色。

With use_default_colors()
Without default colors

#include <curses.h>

int main (){
    int maxx,maxy;
    char test = '*';
    char test2 = '#';

    initscr();
    noecho();
    curs_set(0);

    start_color();
    //use_default_colors();

    init_pair(1, COLOR_RED, COLOR_BLACK);
    init_pair(2, COLOR_CYAN, COLOR_BLACK);

    getmaxyx(stdscr,maxy,maxx);

    do{
        attron(COLOR_PAIR(1));
        mvaddch(10,10,test);
        attroff(COLOR_PAIR(1));

        attron(COLOR_PAIR(2));
        mvaddch(10,12,test2);
        attroff(COLOR_PAIR(2));

    }while(getch() != 'q');

    endwin();
    return;
}

【问题讨论】:

  • 我认为您已将术语设置为深灰色。你可以试试echo -e "\e[1;40m BLACK \e[0m" 吗?
  • @Ôrel 它以相同的灰色背景显示“BLACK”这个词imgur.com/a/XPhkyeZ
  • 40m 是黑色背景的代码,如果你得到灰色这是因为你的术语配置有黑色的灰色
  • 使用默认而不是黑色可以是你要找的
  • 你不能让它“便携”,因为它依赖于终端。 GNOME-terminal 使用调色板使它看起来更好(对于某些人)。

标签: c colors ubuntu-14.04 curses gnome-terminal


【解决方案1】:

调用use_default_colors()后,在init_pair()中使用-1来获取单元格的背景颜色以匹配默认值,而不是COLOR_BLACK

init_pair(1, COLOR_RED, -1);
init_pair(2, COLOR_CYAN, -1);

另一方面,如果你想让COLOR_BLACK 真的是黑色的,你可以尝试通过init_color() 重新定义它:

init_color(COLOR_BLACK, 0, 0, 0);

并非所有终端都支持此功能,但应该给出非常相似的结果。

【讨论】:

  • 他可以尝试 - 但 gnome-terminal 的默认调色板使用灰色,而人们要求黑色。 (kde konsole 在这方面更差,既不能以可识别的形式呈现白色或黑色)。
  • 他会通过上面的 init_color() 调用得到真正的黑色。 (我刚刚在 gnome-terminal 中对其进行了测试以确保。)
  • 看看当你“重置”时会发生什么。
猜你喜欢
  • 2011-06-07
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多