Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/305: Рейтинг темы: голосов - 305, средняя оценка - 4.81
Infinum
1 / 1 / 0
Регистрация: 04.09.2009
Сообщений: 5
#1

Изменение цвета текста и фона при консольном выводе

25.09.2009, 10:54. Просмотров 55421. Ответов 7
Метки нет (Все метки)

Всем привет. Помогите решить мою проблему. Как менять цвет текста и фона при консольном выводе. Чё-то конкретного примера я не нашёл. Не могли бы Вы направить меня на сайт, или написать сами програмку типа
красный синий зелёный .....
И ещё. Надеюсь, что можно просто указать цвет определённого текста, как в HTML тегах, типа просто заключить его в тег, или там
C++
1
cout << "\??(какой-то символ) типа зелёный \??(какой-то символ) типа синий";
Я так думаю, что у этой простенькой проблемы есть простое решение.
Если надо подключить какие-нить файлы, напишите какие, пожалуйста. А лучше простенькую программу. Я там сам разберусь. Заранее большое спасибо.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2009, 10:54
Ответы с готовыми решениями:

Изменение цвета текста/фона при консольном выводе
Доброго времени суток. Как изменить цвет фона/текста в консоли с++ в формате...

Изменение цвета текста и фона в консольном приложении
Вопросик есть какая библиотека используется для подключения цвета в с++ цвет...

Изменение цвета букв и фона в консоле
Подскажите какие функции нужно использовать чтобы можно было закрашивать...

Цвета фона и текста в массиве
Можно ли в С++ сохранить цвета фона и текста в массив? Если да, то как это...

Определенный размер окна при консольном выводе
Доброго времени суток. Возникла такая проблема. Пишу я в geany в windows,...

7
breeve
75 / 75 / 29
Регистрация: 01.08.2009
Сообщений: 177
25.09.2009, 10:57 #2
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<windows.h>
enum ConsoleColor
{
        Black         = 0,
        Blue          = 1,
        Green         = 2,
        Cyan          = 3,
        Red           = 4,
        Magenta       = 5,
        Brown         = 6,
        LightGray     = 7,
       &nbsp;DarkGray      = 8,
        LightBlue     = 9,
        LightGreen    = 10,
        LightCyan     = 11,
        LightRed      = 12,
        LightMagenta  = 13,
        Yellow        = 14,
        White         = 15
};
 
void SetColor(ConsoleColor text, ConsoleColor background)
{
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
int main()
{
   SetColor(Blue,Black); 
   cout << "H1"; //цвет текста голубой цвет фона черный
}
8
GAV_13
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
25.09.2009, 10:58 #3
Лучший ответ Сообщение было отмечено как решение

Решение

Вот что у меня есть. Может подойдет?
C++
1
2
3
4
5
6
7
8
9
#include <Windows.h>
#include <iostream.h>
 
void main()
{
    HANDLE hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsoleHandle, FOREGROUND_BLUE | BACKGROUND_RED);
    cout << "Hello world!" << endl;
}
6
breeve
75 / 75 / 29
Регистрация: 01.08.2009
Сообщений: 177
25.09.2009, 11:17 #4
в моем решении цвет фона меняется исключительно за тем текстом который выводиться. это может помочь если нужно сделать линию одного цвета. тогда надо поставить цвет текста и фона одинаковый и вывести:
C++
1
cout << "aaaaaaaa";
и будет красивая линия).
как сделать цвет фона во всей консоли не знаю.
0
QWAN
59 / 58 / 6
Регистрация: 02.09.2008
Сообщений: 181
25.09.2009, 11:26 #5
Посмотри здесь
http://www.vsokovikov.narod.ru/New_M...trib_char_cons
http://www.vsokovikov.narod.ru/New_M...tattribute.htm
если полистать этот сайт, там есть и примеры
0
Infinum
1 / 1 / 0
Регистрация: 04.09.2009
Сообщений: 5
25.09.2009, 12:06  [ТС] #6
Короче, получилось вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
using namespace std;
 
void SetColor(int text, int background)
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
int main()
{
   for (int i = 0; i < 15; i++)
   {
      for (int j = 0; j < 15; j++)
      {
         SetColor( i, j);
         cout << "       Hello!!!!      ";
         SetColor( 15, 0);
         cout << "   [" << i << "][" << j << "]\n";
      }
   }
   system("PAUSE");
   return 0;
}
Всем ОГРОМНОЕ СПАСИБО!!!
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
25.09.2009, 12:28 #7
я бы ещё перегрузку добавил, чтобы и int и ConsoleColor пользоваться
типа так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//#include "stdafx.h"
#include <iostream>
#include <Windows.h>
using namespace std;
 
 
enum ConsoleColor
{
        Black         = 0,
        Blue          = 1,
        Green         = 2,
        Cyan          = 3,
        Red           = 4,
        Magenta       = 5,
        Brown         = 6,
        LightGray     = 7,
        DarkGray      = 8,
        LightBlue     = 9,
        LightGreen    = 10,
        LightCyan     = 11,
        LightRed      = 12,
        LightMagenta  = 13,
        Yellow        = 14,
        White         = 15
};
 
void SetColor(int text, int background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
void SetColor(int text, ConsoleColor background)
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
int main()
{
   for (int i = 0; i < 15; i++)
   {
      for (int j = 0; j < 15; j++)
      {
         SetColor( i, Red);
         cout << "       Hello!!!!      ";
         SetColor( 15, j);
         cout << "   [" << i << "][" << j << "]\n";
      }
   }
   system("PAUSE");
   return 0;
}
2
intern
15 / 15 / 8
Регистрация: 30.03.2014
Сообщений: 74
Завершенные тесты: 2
15.06.2014, 18:33 #8
C++
1
SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
Почему используется побитовый сдвиг именно на 4?
0
15.06.2014, 18:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2014, 18:33

Изменение цвета фона строк матрицы по заданному условию
Здравствуйте! Будьте добры, помогите разобраться с таким нюансом: у меня...

Форматирование текста и изменение цвета текста в консоли
Подскажите пожалуйста, как форматировать текст в консоли, а также как менять...

Изменение цвета текста
Привет всем. Можно ли в консоле менять цвет ЧАСТИ текста? тоесть выделить одно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru