2

我一直在寻找漂亮的颜色,例如 mc 的黄色和绿色。

在 ncurses 中,您可以指定这些 RGB:

10.2. 更改颜色定义

函数 init_color() 可用于更改最初由 curses 定义的颜色的 rgb 值。假设您想将红色的强度稍微减轻一点。然后您可以将此功能用作

init_color(COLOR_RED, 700, 0, 0);
/* param 1     : color name
 * param 2, 3, 4 : rgb content min = 0, max = 1000 */

我找不到亮黄色或亮绿色。它们不是默认包含在 ncurses 中吗?

问候,乌尔里希

4

5 回答 5

1

你可以有“完整”的颜色,但你需要重新编译你的 ncurses 来支持它(并且有一些可以显示它的东西)

“要编译支持 256 色的 NCurses,请使用此选项:”

--enable-ext-colors

参考:http : //www.c-for-dummies.com/ncurses/256color.php 根据 NCurses 的维护者和 Dan Gookin 的 Thomas Dickey

Color   Function                        Constant Name
0       init_color(0,0,0,0);            COLOR_BLACK
1       init_color(0,1000,0,0);         COLOR_RED
2       init_color(0,0,1000,0);         COLOR_GREEN
3       init_color(0,1000,1000,0);      COLOR_YELLOW
4       init_color(0,0,0,1000);         COLOR_BLUE
5       init_color(0,1000,0,1000);      COLOR_MAGENTA
6       init_color(0,0,1000,1000);      COLOR_CYAN
7       init_color(0,1000,1000,1000);   COLOR_WHITE
  • 可以从 NCurses 中获得超过标准的 8 种(或 16 种)颜色...

您的 TERM 环境变量也可能会xterm尝试将其更改为xterm-256color

于 2014-06-04T19:54:08.300 回答
0
   main()
   {
    initscr();
    if (start_color() == OK)
    {
        init_pair (1, COLOR_RED, COLOR_GREEN);
        attron (COLOR_PAIR (1));
        if (init_color (COLOR_RED, 0, 0, 1000) == OK)
            addstr ("BLUE ON GREEN");
        else
            addstr ("RED ON GREEN");
        getch ();
    }
    endwin();
   }
于 2013-03-01T21:02:56.153 回答
0

你可以做的就是创造一种新的颜色,它的名字

COLOR_BRIGHT_YELLOW 到颜色编号 8

COLOR_BRIGHT_GREEN 到颜色编号 9

但我从来没有做过,而且没有太多记录。

于 2013-03-03T10:33:45.627 回答
0

终端支持的颜色和颜色对(bg + fg)的数量由函数返回:

COLOR()
COLOR_PAIRS()

正如solusipse正确指出的那样,默认情况下应该有8 种颜色(在 中只定义了8 种curses.h)。

终端可能支持该init_color()呼叫,但很可能不会。您可以检查它发出调用:

can_change_color().

Pubby正确地指出,粗体(带A_BOLD)可以使文本更亮,总共允许 16 种颜色,但仅限于前景色。

在我的系统上xtermgnome-terminalkonsole行为完全相同;他们报告 8 种颜色,64 种颜色对,can_change_color()是错误的,并且该A_BOLD属性确实使 fg 颜色变亮。

于 2013-02-27T10:11:26.797 回答
0

如果你想要明亮的颜色,那么你必须使用:

attrxxx(COLOR_PAIR(COLOR_xxxxx) | A_BOLD)

因此,要获得亮黄色,可以使用:

attr_t color_bright_yellow = COLOR_PAIR(COLOR_YELLOW) | A_BOLD;


(请注意,如果您想要更多颜色,请编译 [更具体,./configure] ncurses--with-ext-colors启用。)

于 2015-08-01T22:40:51.490 回答