2013-02-27 3 views
2

Я искал красивые цвета, такие как mc для желтого и зеленого.C: яркие и яркие зеленые цвета (ncurses)?

В Ncurses, вы можете указать эти RGB:

10.2. Изменение цветовых определений

Функция init_color() может использоваться для изменения значений rgb для цветов , определенных первоначально проклятиями. Предположим, что вы хотите уменьшить яркость красным цветом минус. Затем вы можете использовать эту функцию в качестве

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

Я не смог найти ярко-желтые или ярко-зеленые цвета. Не включены ли они по умолчанию в ncurses?

Привет, Ulrich

+2

Обычно яркие цвета являются полужирный из них. Жирный текст. – Pubby

+1

Я не использовал ncurses какое-то время, но, как я помню, по умолчанию всего 8 цветов. – solusipse

ответ

0

количество цветов и цветовых пар (BG + FG), поддерживаемых терминалом возвращается функциями:

COLOR() 
COLOR_PAIRS() 

Как solusipse правильно указывает, должно быть 8 цвета по умолчанию (всего 8 определены в curses.h).

Звонок init_color() может поддерживаться терминалом, но, скорее всего, этого не произойдет. Вы можете проверить его выдачу вызова:

can_change_color(). 

Pubby правильно указал, что жирный шрифт (с A_BOLD) можно ярче текстом, позволяя вам в общей сложности 16 цветов, но только для цвета переднего плана.

В моей системе xterm, gnome-terminal и konsole ведут себя точно так же; они сообщают о 8 цветах, 64 цветовых парах, can_change_color() является ложным, а атрибут A_BOLD действительно осветляет цвет fg.

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(); 
    } 
0

Дело в том, что вы могли бы сделать, это создать новый цвет, который будет иметь дэ имя

COLOR_BRIGHT_YELLOW на номер цвета 8

COLOR_BRIGHT_GREEN на номер цвета 9

но I никогда не делали этого, и это не так документировано.

1

Вы можете иметь «полный» цвет, но вам нужно перекомпилировать Ncurses, чтобы поддержать его (и есть то, что может показать его)

«Чтобы компилировать Ncurses с 256 поддержкой цвета, используйте этот вариант:»

--enable-ext-colors 

исй: http://www.c-for-dummies.com/ncurses/256color.php в соответствии с Томасом Дики, сопровождающее Ncurses' и Дэн Гукиным

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 
  • можно получить больше, чем стандартные 8 (или 16) цвета, выполненной из Ncurses ...

Ваша переменная TERM среда может также быть xterm попытаться изменить что xterm-256color

0

Если вы хотите яркие цвета, то вы должны использовать:

attrxxx(COLOR_PAIR(COLOR_xxxxx) | A_BOLD) 

Так, чтобы получить ярко-желтый цвет, можно было бы использовать:

attr_t color_bright_yellow = COLOR_PAIR(COLOR_YELLOW) | A_BOLD; 

и т.д.
(Обратите внимание, если вы хотите больше цвета, компилировать [быть более конкретным, ./configure] Ncurses с --with-ext-colors включены.)

Смежные вопросы