Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 278, средняя оценка - 4.72
Infinum
1 / 1 / 0
Регистрация: 04.09.2009
Сообщений: 5
#1

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

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

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

Изменение цвета текста/фона при консольном выводе - C++
Доброго времени суток. Как изменить цвет фона/текста в консоли с++ в формате RGB? Я знаю, что есть подобная фича в windows.h, но это не...

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

Изменение цвета букв и фона в консоле - C++
Подскажите какие функции нужно использовать чтобы можно было закрашивать различным цветом слова и фон вокруг этих слов при выводе на экран?

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

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

Изменение цвета текста - C++
Привет всем. Можно ли в консоле менять цвет ЧАСТИ текста? тоесть выделить одно слово другим цветом например Просто system(color ** )...

7
breeve
75 / 75 / 14
Регистрация: 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 / 4
Регистрация: 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 / 14
Регистрация: 01.08.2009
Сообщений: 177
25.09.2009, 11:17 #4
в моем решении цвет фона меняется исключительно за тем текстом который выводиться. это может помочь если нужно сделать линию одного цвета. тогда надо поставить цвет текста и фона одинаковый и вывести:
C++
1
cout << "aaaaaaaa";
и будет красивая линия).
как сделать цвет фона во всей консоли не знаю.
0
QWAN
58 / 57 / 1
Регистрация: 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
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 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 / 6
Регистрация: 30.03.2014
Сообщений: 74
Завершенные тесты: 2
15.06.2014, 18:33 #8
C++
1
SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
Почему используется побитовый сдвиг именно на 4?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2014, 18:33
Привет! Вот еще темы с ответами:

Изменение цвета текста в консоли - C++
Как изменить цвет только определённого текста в консоли? Например изменить цвет элементов матрицы, расположенных выше побочной диагонали?

Реализовать в консольном режиме изменение координат элемента в матрице при нажатии стрелки вверх - C++
Как в консольном режиме реализовать, что координаты элемента в матрице меняются при нажатии стрелки вверх?

Сымитировать табуляцию при выводе текста - C++
Кто может написать код к этому условию: При выводе текстов на экран или печатающее устройство часто используются табуляционные остановки...

В консольном выводе выделить разными цветами элементы матрицы - C++
Доброй ночи всем. Я делаю задачу в Visual C++ 2008 Express. У меня вот какое дело. Выводится на экран матрица M на N. Это типа...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
15.06.2014, 18:33
Ответ Создать тему
Опции темы

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