Как изменить цвет для окна консоли c++
Внимание! Представленные ниже способы подходят только для 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:
HANDLE h; h = GetStdHandle(STD_OUTPUT_HANDLE); //получаем наше окно, в котором нужно изменить цвет
И установим жёлтый цвет на зелёном фоне:
SetConsoleTextAttribute(h, (((2
Что же это за страшная функция? Если кратко: число смещается на 4 бита влево и объединяется со вторым в результате логического ИЛИ. Эти действия объединят числа, чтобы функция установила нужный цвет и фон. Если интересно, можно взять результат этих операций (в данном случае 46) и скормить их функции:
SetConsoleTextAttribute(h, 46);
И вы получите такой же результат. Но настраивать гораздо удобнее по двум числа (первая отвечает за фон, вторая за текст).
Вот список цветов для этой функции:
- Чёрный - 0
- Синий - 1
- Зелёный - 2
- Голубой - 3
- Красный - 4
- Пурпурный - 5
- Коричневый - 6
- Светло-серый - 7
- Тёмно-серый - 8
- Светло-синий - 9
- Светло-зелёный - 10
- Светло-голубой - 11
- Светло-красный- 12
- Светло-пурпурный - 13
- Жёлтый - 14
- Белый - 15

Внимание! Функция system("color . ") устанавливает цвет для всей консоли и всех символов, а SetConsoleTextAttribute(); только для символов и той части консоли, которая находится под ними.
Возможно ли в консольной команде на c#, менять цвет символов находящихся в строке?
Здравствуйте, я знаю, что в консоли можно менять цвет текста и цвет за текстом.
Можно ли менять задний фон с черного на другой цвет.
И главный вопрос.
Есть строка
string stroka = "новая колбаса ла ла ла.."; Могу ли я в данной строке поменять цвет только у "ла ла", а все остальное оставить белым ? или у меня есть только один выход - это делить строку по определенным символам и уже потом менять цвет той строке где находится это слово ?
- Вопрос задан более трёх лет назад
- 13005 просмотров
1 комментарий
Оценить 1 комментарий
Anton @MoonMaster
можно воспользовать решением в лоб. "Ла ла" вывести в новой консоли и установить ему цвет
Решения вопроса 1
Студент-технарь
Если вам надо закрасить всю консоль одним цветом - используйте
Console.BackgroundColor = ConsoleColor.Green; // к примеру зеленый Console.Clear();
Но в таком случае весь выведенный в консоль текст пропадет.
Строку по цветам вывести нельзя. Можно лишь разбить на части, каждую из которых выводить своим цветом.
В Вашем случае как-то так
Console.Write("новая колбаса "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("ла ла "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("ла..");
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 2

Александр Тер @alexsandr0000
Программист C#/C++/C
Вот пример
Console.ForegroundColor = ConsoleColor.Red; Console.BackgroundColor = ConsoleColor.Yellow; Console.WriteLine("Вычисления c и s круга"); Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Yellow; Console.BackgroundColor = ConsoleColor.Black; Console.Write("Введите радиус > "); double r = Convert.ToDouble(Console.ReadLine()); //длина окружности: double c = 2 * Math.PI * r; //площадь круга: double s = Math.PI * r * r; //округляем значения: c = Math.Round(c, 2); s = Math.Round(s, 2); //печатаем результаты вычислений в консольном окне: Console.ForegroundColor = ConsoleColor.Green;
progtask.ru
Для изменения цвета подложки и шрифта используются свойста Console.BackgroundColor и Console.ForegroundColor соответственно.
Для того, чтобы скинуть цвета на стандартные, можно воспользоваться методом Console.ResetColor().
class Program < static void Main(string[] args) < Console.BackgroundColor = ConsoleColor.White; // устанавливаем белый цвет фона для текста Console.ForegroundColor = ConsoleColor.Red; // устанавливаем красный цвет шрифта Console.WriteLine("Строка 1"); // выводим строку Console.ResetColor(); // скидываем настройки цвета на стандартные Console.WriteLine("Строка 2"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("Строка 3"); // устанавливаем синий цвет шрифта Console.ReadKey(); // ожидание нажатия любой кнопки >>
Цвет шрифта в консоли Clion
Меняю цвет шрифта в консоли с помощью следующей команды: std::cout«"\033[nm"; , где n - идентификатор цвета.
Выходит, что зеленый имеет а желтый - Очень важно, чтоб зеленый в консоли был сочным, а выходит, что он немногим отличается от желтого. Где можно поменять настройки отображения цвета или использовать другой способ (если да, то какой?).
P.S.: на Visual Studio, Code::Blocks - таких проблем не наблюдается.
d_ns
25.09.18 19:02:30 MSK