Как изменить цвет для окна консоли c++
Как можно изменить цвет консоли своего приложения на C++? Нужно использовать Windows.h?
Сам спросил — сам и отвечу.
Внимание! Представленные ниже способы подходят только для Windows систем! Для Linux используйте библиотеку ncurses .
Можно менять цвет фона окна и символов без дополнительных библиотек, простой функцией system() . Достаточно написать, например, system("color F0") и будет установлен белый фон (F) и чёрный текст (0). Можно писать и наоборот, например: system("color 3F"); установит голубой фон и белый текст.
- 0 — черный
- 1 — синий
- 2 — зеленый
- 3 — голубой
- 4 — красный
- 5 — лиловый
- 6 — желтый
- 7 — белый
- 8 — серый
- 9 — свело-синий
- A — светло-зеленый
- B — светло-голубой
- С — светло-красный
- E — светло-желтый
- F — ярко-белый
Можно использовать функцию SetConsoleTextAttribute() из Windows.h:
И установим жёлтый цвет на зелёном фоне:
Что же это за страшная функция? Если кратко: число смещается на 4 бита влево и объединяется со вторым в результате логического ИЛИ. Эти действия объединят числа, чтобы функция установила нужный цвет и фон. Если интересно, можно взять результат этих операций (в данном случае 46) и скормить их функции:
И вы получите такой же результат. Но настраивать гораздо удобнее по двум числа (первая отвечает за фон, вторая за текст).
Вот список цветов для этой функции:
- Чёрный — 0
- Синий — 1
- Зелёный — 2
- Голубой — 3
- Красный — 4
- Пурпурный — 5
- Коричневый — 6
- Светло-серый — 7
- Тёмно-серый — 8
- Светло-синий — 9
- Светло-зелёный — 10
- Светло-голубой — 11
- Светло-красный- 12
- Светло-пурпурный — 13
- Жёлтый — 14
- Белый — 15
Внимание! Функция system("color . ") устанавливает цвет для всей консоли и всех символов, а SetConsoleTextAttribute(); только для символов и той части консоли, которая находится под ними.
Как изменить цвет фона и цвет шрифта командной строки Windows?
Многие пользователи Windows даже не подозревают о всех способностях этой операционной системы, когда дело касается настройки пользовательского интерфейса. Сегодня мы хотим рассказать о том, как поменять цвет в командной строке со стандартного на любой другой.
Кто-то из пользователей вообще не пользуется командной строкой, а кто-то использует ее постоянно. Категория последних пользователей знает, что стандартные цвета довольно скучные и очень быстро надоедают. В стандартном исполнении командная строка имеет черный фон и белый шрифт.
Как поменять цвет в командной строке?
-
можно использовать специальные инструкции внутри командной строки;
-
можно использовать пользовательский интерфейс.
Как поменять цвет в командной строке при помощи инструкций
-
Откройте командную строку любым удобным способом. Это можно сделать через основное меню или через командное окно «Выполнить», если ввести в нем команду: «cmd».
-
В командной строке введите команду: «color -help». С помощью этой команды вы выведите список доступных цветов, поддерживаемых командной строкой. Но самое главное, что каждому цвету будет закреплен о обозначение в виде цифры и буквы латинского алфавита.
-
После того как вы определитесь с идентификаторами цветов для шрифта и фона, можете в командной строке задать команду, которая сменит цвета. Команда строится по такому шаблону: «color <идентификатор цвета фона> <идентификатор цвета шрифта>».
-
«color 46» — будет задан красный фон и желтый цвет текста;
-
«color 02» — будет задан черный фон и зеленый цвет текста;
-
«color 24» — будет задан зеленый фон и красный цвет текста;
-
и другие комбинации.
Как поменять цвет командной строки с помощью пользовательского интерфейса
-
Запустите командную строку любым удобным способом.
-
Кликните по рамке командной строки правым кликом мыши, чтобы вызвать меню.
-
В открывшемся меню выберите пункт «Свойства», чтобы вам открылось дополнительное окно настройки.
-
В открывшемся окне настроек выберите вкладку «Цвета». В этой вкладке можно будет поменять цвет фона и текста командной строки. Причем, все доступные цвета будут располагаться тут же. Вам останется только выбрать что вы хотите отредактировать: фон или шрифт и определить им цвет. Тут же будет располагаться небольшое демонстрационное окно, где вы сможете сразу увидеть созданную комбинацию цветов в деле.
-
После всех манипуляций нужно будет сохранить изменения.
Заключение
После прочтения этой статьи до конца, перед вами уже не будет стоять вопрос, как поменять цвет фона или текста командной строки. Если вы отлично дружите с командной строкой, тогда можете воспользоваться первым способом, который состоит специальны командных инструкций. Если вам «ближе» пользовательский интерфейс, тогда можете поменять цвет в cmd вторым способом.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Разукрашиваем вывод в консоли: теория и практика
Консоль привлекает многих своей минималистичностью и эстетикой, но даже в ней иногда хочется выделить определённый фрагмент, чтобы показать его роль или значимость. Например, отметить зелёным текстом сообщение об успешном выполнении операции или обозначить длинный текст ошибки курсивом. О том, как это делать, а также о реализации на питоне — читайте далее.
Управляющие последовательности ANSI
ANSI escape sequences или Управляющие последовательности ANSI — это стандарт, дающий возможность управлять курсором, цветами, начертание в текстовых консолях. Такие последовательности воспринимаются отрисовщиком терминала, как команды отображать последующий текст в определенном формате. Есть также последовательность, которая сбрасывает предыдущие команды, и отображение текста становиться обычным. Существует несколько форматов управляющих последовательностей, различающихся возможностями и появившимися в разных версиях кодировок. Поговорим об этих форматах подробнее.
8 основных цветов и стили
Для обычного пользователя разнообразия цветов этого формата будет более чем исчерпывающим. Но прежде чем задумываться о том, что терракотовый цвет гораздо круче красного, и он вам уж точно нужен, давайте разберемся, как устроена самая простая версия управляющей последовательности ANSI для форматирования текста.
Чтобы изменить текущий цвет шрифта или фона можно использовать следущий синтаксис:
- Начинается управляющая последовательность с любого из этих трёх представлений: \x1b[ (hex) или \u001b[ (Unicode) или \033[ (oct)
- Далее следуют аргументы, разделённые между собой ; (можно указывать в любом порядке)
- В конце ставится буква m
Возможные аргументы
Модификатор | Код |
---|---|
1 | Жирный |
2 | Блеклый |
3 | Курсив |
4 | Подчёркнутый |
5 | Мигание |
9 | Зачёркнутый |
Изменения цвета шрифта
Цвет | Код |
---|---|
30 | Чёрный |
31 | Красный |
32 | Зелёный |
33 | Жёлтый |
34 | Синий |
35 | Фиолетовый |
36 | Бирюзовый |
37 | Белый |
Изменения цвета фона
Цвет | Код |
---|---|
40 | Чёрный |
41 | Красный |
42 | Зелёный |
43 | Жёлтый |
44 | Синий |
45 | Фиолетовый |
46 | Бирюзовый |
47 | Белый |
Бонус: другие интересные модификаторы, которые могут поддерживаться не всеми платформами
Модификатор | Код |
---|---|
38 | RGB цвет (см. раздел «Совсем много цветов») |
21 | Двойное подчёркивание |
51 | Обрамлённый |
52 | Окружённый |
53 | Надчёркнутый |
Пример корректного синтаксиса: \033[3;36;44m . После вывода этой конструкции стиль будет изменён для всего последующего текста. Чтобы вернуться к изначальному состоянию можно использовать \033[0m , тогда весь текст с этого места вернётся к изначальному форматированию.
Давайте поэкспементируем. Для примеров я буду использовать Python.
Важно заметить, что форматирование повлияло и на консоль питона, а не только на ее вывод. Именно поэтому очень важно закрывать все «тэги» изменения форматирования.
Часто используемые сочетания (copy-paste-able)
Код | Описание |
---|---|
\033[0m | вернуться к начальному стилю |
\033[31m <your text goes here> \033[0m | красный текст — для обозначения ошибок |
\033[1;31m <your text goes here> \033[0m | жирный красный текст — для обозначения критических ошибок |
\033[32m <your text goes here> \033[0m | зеленый текст — успешное выполнение |
\033[3;31m <your text goes here> \033[0m | красный курсив — текст ошибки |
\033[43m <your text goes here> \033[0m | выделение основного, как будто жёлтым маркером |
Больше цветов: аж целых 256
Некоторые терминалы поддерживают вывод целых 256 цветов. Если команда echo $TERM выводит xterm-256color , то ваш терминал всё корректно обработает.
В этом формате синтаксис немного другой:
Для генерации кодов цветов можно использовать генератор.
А палитру доступных цветов можно увидеть на картинке ниже.
Совсем много цветов
Этот формат не всегда поддерживается стандартными консолями.
Некотрые будут негодовать: «256 цветов и нет моего любимого терракотового, какой ужас!». Для таких ценителей существует формат, который уже поддерживает 24 битные цвета (3 канала RGB по 256 градаций).
Для не ценителей поясню, что терракотовый кодируется как — (201, 100, 59) или #c9643b.
Синтаксис в этом формате выглядит вот так:
- \033[38;2;⟨r⟩;⟨g⟩;⟨b⟩m — цвет текста
- \033[48;2;⟨r⟩;⟨g⟩;⟨b⟩m — цвет фона
Python: Использование библиотеки Colorama
Библиотека Colorama позволяет форматировать текст, не запоминая коды цветов. Рассмотрим её использование на примере:
Style позволяет изменить стиль, Fore — цвет шрифта, Back — цвет фона. Использовать переменные из colorama нужно также, как и коды изменения стиля. Но плюс использования библиотеки в том, что Fore.RED более читаем, чем \033[0;31m
Если в colorama.init() указать параметр autoreset=True , то стиль будет автоматически сбрасываться (в конец каждого print будут добавлены сбрасывающие стили последовательности), поэтому вам не придётся об этом каждый раз вспоминать.
А что не так с Windows?
Просто так синтаксис, описанный в начале статьи, не работает в командной строке Windows. Поддержка цветов появлялась постепенно, причём в странном варианте. В начале программы надо сделать системный вызов, активирующий отрисовку цветов. А в более старых версиях необходимо заменить все ANSI последовательности на системные вызовы.
Но colorama.init() сделает всё за вас в большинстве версий Windows. Однако если вы используете другую операционную систему, то функцию init() вызывать в начале программы не обязательно. Также некоторые IDE на Windows (например, PyCharm) тоже поддерживают цвета без каких-либо махинаций.
А еще Windows не поддерживает многие модификаторы, такие как жирный текст. Подробнее можно почитать на странице Colorama
Termcolor
Ещё одна библиотека для вывода цветного текста с более удачным, на мой взлгяд, синтаксисом.
Кстати, проблему с Windows всё ещё можно починить с помощью colorama.init()
Выводы
Стандартные 8 цветов позволяют разнообразить вывод в консоль и расставить акценты. 256 цветов намного расширяют возможности, хотя и поддерживаются не всеми консолями. Windows, к сожалению, не поддерживает многие основные модификаторы, например, курсив. Также есть некоторые цвета, которые не прописаны в стандартах, но могут поддерживаться вашей операционной системой. Если вы хотите больше цветов, то вы можете поискать их в Гугле.
Пока что не любой терминал поддерживает 24-битные цвета и все модификаторы, но мы вряд ли увидим сильные изменения в этой сфере. Так что пока нам остаётся выбирать самые красивые варианты из тех, что доступны в любимом терминале.
Источники
- Картинки с синтаксисом из статьи
- Генератор из статьи на Хабре
Облачные серверы от Маклауд быстрые и безопасные.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Работа с консолью в C# (класс Console). Украшение консоли
Нередко при разработке консольных приложений в C# необходимо каким-либо образом акцентировать внимание пользователя на отдельных частях программы. Например, выделить цветом определенный запрос на ввод данных или указать на ту или иную ошибку. Класс Console позволяет это сделать, используя специальные свойства и методы для работы с окном консоли.
Как изменить цвет текста в консоли?
Наверное, самым популярным украшением консоли является изменение цвета текста. Чтобы изменить цвет всего следующего текста в консоли, необходимо использовать свойство ForegroundColor класса Console . Свойство ForegroundColor имеет тип специального перечисления ( enum ) ConsoleColor и, в связи с этим, мы несколько ограничены в выборе цвета текста, однако и доступных цветов (а их ровно шестнадцать) нам вполне должно хватить, чтобы сделать консоль более красивой. Рассмотрим такой пример:
Здесь мы несколько раз меняем цвет текста, в зависимости от того, что мы хотим сделать: обратить внимание пользователя (красный), ввод текста (зеленый), вывод текста (синий). На экране можно увидеть следующую красочную консоль:
Чтобы продемонстрировать все имеющиеся цвета, которые мы можем использовать для консоли, можно написать вот такую простенькую программку с циклом:
На экран будут выведены все значения перечисления ConsoleColor
При этом, первая строка в консоли написана чёрным цветом на чёрном фоне, поэтому её и не видно. Именно на этом моменте мы и перейдем к следующему вопросу — как изменить цвет фона в консоли?
Как изменить цвет фона в консоли?
Для того, чтобы изменить цвет фона в консоли используется свойство BackgroundColor . Это свойство, также, как ForegroundColor принимает значения типа ConsoleColor , поэтому подробно мы на этом свойстве останавливаться не будем, а только продемонстрируем небольшой пример того, как вывести в консоль чёрный текст на белом фоне:
Как изменить цвет всего окна консоли?
Как можно заметить, в предыдущем примере цвет фона меняется только под текстом. Если же нам необходимо изменить цвет всего окна, то необходимо после присвоения свойству BackgroundColor значения очистить консоль вызвав метод Clear() . Например:
В результате увидим следующее окно консоли:
Как изменить заголовок консоли
Чтобы изменить заголовок консоли, необходимо использовать свойство Title . Например:
Итого
В этой части учебника по C# мы научились украшать консоль, используя свойства класса Console : изменять цвет текста, фона, изменять заголовок окна консоли. В следующей части рассмотрим как работать с буфером консоли.