Anonymous
Разные цвета на окнах, чем на Linux в Ncurses
Сообщение
Anonymous » 29 июн 2025, 12:54
Я создаю программу Ncurses в C ++, где я переопределяю цвета. Но цвета совершенно разные на окнах, чем на Linux. На Linux цвета работают нормально и выглядят так же задумано. Но в окнах цвета отвратительны и, по-видимому, не соответствуют переопределениям, которые я им дал.
Код: Выделить всё
void InitColors()
{
start_color();
if (can_change_color() && COLORS >= 256)
{
init_color(COLOR_BLACK, 400, 400,
400);
init_color(COLOR_BLUE, 700, 700,
700);
init_color(COLOR_WHITE, 900, 900,
900);
init_pair(1, COLOR_WHITE,
COLOR_BLUE);
init_pair(2, COLOR_BLACK,
COLOR_WHITE);
bkgd(COLOR_PAIR(2));
}
else
{
// Fallback for terminals that don't support color
if (COLORS >= 8)
{
init_pair(1, COLOR_WHITE, COLOR_BLUE);
init_pair(2, COLOR_WHITE, COLOR_BLACK);
init_pair(3, COLOR_BLACK,
COLOR_WHITE);
bkgd(COLOR_PAIR(2));
}
else
{
// Monochrome fallback
init_pair(1, COLOR_WHITE, COLOR_BLACK);
bkgd(COLOR_PAIR(1));
}
}
}
int main(int argc, char** argv)
{
setlocale(LC_ALL,
"");
setlocale(LC_CTYPE, "");
initscr();
nodelay(stdscr, TRUE);
noecho();
raw();
InitColors();
clear();
attron(COLOR_PAIR(1));
printw("Hey there!\n");
refresh();
attron(COLOR_PAIR(2));
printw("Hey there!\n");
refresh();
while (1) {}
}
Вывод Windows:
linux output:
Я использую WSL для проверки выхода Linux. Я использую Pdcurses в Windows.
Подробнее здесь:
https://stackoverflow.com/questions/796 ... in-ncurses
1751190844
Anonymous
Я создаю программу Ncurses в C ++, где я переопределяю цвета. Но цвета совершенно разные на окнах, чем на Linux. На Linux цвета работают нормально и выглядят так же задумано. Но в окнах цвета отвратительны и, по-видимому, не соответствуют переопределениям, которые я им дал.[code]void InitColors() { start_color(); if (can_change_color() && COLORS >= 256) { init_color(COLOR_BLACK, 400, 400, 400); init_color(COLOR_BLUE, 700, 700, 700); init_color(COLOR_WHITE, 900, 900, 900); init_pair(1, COLOR_WHITE, COLOR_BLUE); init_pair(2, COLOR_BLACK, COLOR_WHITE); bkgd(COLOR_PAIR(2)); } else { // Fallback for terminals that don't support color if (COLORS >= 8) { init_pair(1, COLOR_WHITE, COLOR_BLUE); init_pair(2, COLOR_WHITE, COLOR_BLACK); init_pair(3, COLOR_BLACK, COLOR_WHITE); bkgd(COLOR_PAIR(2)); } else { // Monochrome fallback init_pair(1, COLOR_WHITE, COLOR_BLACK); bkgd(COLOR_PAIR(1)); } } } int main(int argc, char** argv) { setlocale(LC_ALL, ""); setlocale(LC_CTYPE, ""); initscr(); nodelay(stdscr, TRUE); noecho(); raw(); InitColors(); clear(); attron(COLOR_PAIR(1)); printw("Hey there!\n"); refresh(); attron(COLOR_PAIR(2)); printw("Hey there!\n"); refresh(); while (1) {} } [/code] Вывод Windows: linux output: Я использую WSL для проверки выхода Linux. Я использую Pdcurses в Windows. Подробнее здесь: [url]https://stackoverflow.com/questions/79683633/different-colors-on-windows-than-on-linux-in-ncurses[/url]