Как поменять цвет вывода в c
Перейти к содержимому

Как поменять цвет вывода в c

  • автор:

Управление выводом символов в си

В языке СИ есть функции, которые позволяют задавать цвет символа и фона знакоместа. Функция textcolor (x) — задает цвет символа (x — int, код цвета). Функция textbackground (x) — задает цвет фона знакоместа (x -int, код цвета). Для установки видеорежима можно восполь-зоваться функцией 0Н прерывания 10Н:

_AL = 0x03 — третий (80*25, цветной),

geninterrupt (0x10),

или функцией textmode (x), где x = .

Для непосредственной записи в видеопамять можно использовать функции: poke и pokeb с параметрами (0xB800, X, Z), где 0xB800 — сегмент соответствующий началу видеобуфера, X — смещение, Z — значение байта. Функция pokeb записывает байт, а poke — слово по указан-ному адресу.

Режим графики

В СИ есть функции, позволяющие выводить графическую информацию на экран. Рассмотрим только некоторые из них.

INITGRAPH ( &driver, &mode, «D:\TC\BGI») инициализирует графический режим,

где driver — тип графического адаптера: CGA, EGA, . DETECT, параметр DETECT устанавливает тип графического адаптера автоматически;

mode — тип видеорежима;

«D:\TC\BGI» — обратный путь расположения графических драйверов

PUTPIXEL (int x, int y, color) — рисует точку цвета color в позиции x, y.

Непосредственная адресация видеопамяти в графическом режиме для EGA возможна, но довольно трудна. Мы рассмотрим этот вопрос в лабораторной работе 6.

Определение времени работы программы

Для сравнения различных методов управления выводом на экран можно воспользоваться функцией clock();

clock_t START, END;

START = clock();

END = clock()

где F — время работы программы (участка) в секундах.

Домашнее задание

1. Составить краткий конспект лабораторной работы.

2. Составить программу(ы), которая выполняла бы следующие действия:

а) с помощью функций СИ выводила на весь экран (80х25) символы с кодами от 15 до 254, изменяя у каждого следующего символа его цвет, а через 8 символов меняя цвет фона;

б) задача а), но с помощью непосредственной адресации видеобуфера (pokeb);

в) рисовала на экране цветными точками прямоугольник 10<X<90, 10<Y<120 с помощью функции putpixel;

г) задача в), но с помощью функции 0CH прерывания 10H;

д) определяла время решения всех задач.

Порядок выполнения работы

1. Получить у преподавателя допуск к лабораторной работе.

2. Отладить программу на ЭВМ.

3. Сравнить время решения задач различными методами, выводы записать в конспект.

4. Защитить лабораторную работу.

Лабораторная работа n4 Методы защиты программ и данных краткие теоретические сведения

Одной из функций операционной системы является задача обеспечения избирательного доступа к программам и данным. Наиболее распространенным методом, обеспечивающим персонифицированный вход в систему и доступ к информации является система паролей. Он достаточно просто реализуется, однако не обеспечивает полноценной защиты данных. В тех случаях, когда к степени защищенности предъявляются высокие требования (банковское дело, оборона, разведка и т.п.) необходимым становится специальное кодирование ( шифрование ) данных (или программного кода). При этом пользователь несанкционированно проникший в систему не сможет воспользоваться программами и данными, не имея специального средства декодирования (тщательно засекреченного).

Функции API для работы с консолью

Для начала работы с консолью необходимо получить ее дескриптор.

Функция получения дескриптора стандартного устройства ввода, вывода или ошибки в зависимости от переданного константного параметра:
HANDLE WINAPI GetStdHandle(__in DWORD nStdHandle);

nStdHandle может принимать значения

  • STD_INPUT_HANDLE = -10; // устройство ввода
  • STD_OUTPUT_HANDLE = -11; // устройство вывода
  • STD_ERROR_HANDLE = -12; // ошибка

Использование русского языка в консоли с помощью API

Для указания кодовой страницы используются функции

  • Кодовая страница консоли вывода
    BOOL WINAPI SetConsoleOutputCP(UINT wCodePageID);
  • Кодовая страница консоли ввода
    BOOL WINAPI SetConsoleCP(UINT wCodePageID);

где wCodePageID — номер кодовой страницы.
Для перекодировки на русский язык используется кодовая страница wCodePageID=1251 .

Для перекодировки русского текста, введенного в Win-коде также может использоваться функция

Change Console Color in C++

Change Console Color in C++

This article will explain several methods of how to change the console color in C++.

Use ANSI Escape Codes to Change Console Color

Since the colors are not part of the standard C++ library and the console-specific features are mostly handled by the operating systems, there’s no native language feature to add colors to output streams. Although, we discuss some platform-specific ways to handle colorizing text output.

ANSI escape codes are a relatively portable way to solve this problem. Escape codes are byte sequences starting mostly with an ASCII Escape character and bracket character followed by parameters. These characters are embedded into the output text, and the console interprets the sequences as commands rather than text to display. ANSI codes include multiple color formats, full details of which can be seen on this page. In the following code example, we demonstrate defining several color characters as macros and later include these symbols in the printf string arguments. Notice that printf concatenates multiple double-quoted strings passed in the first parameter place.

Output (without program argument):

Output (with program argument):

Alternatively, the same escape codes can be used with a cout call. Note that it’s not necessary to use the << stream insert operator multiple times and just combine macro symbols in conjunction with the string literals as they will automatically get combined.

Use SetConsoleTextAttribute() Method to Change Console Color in C++

SetConsoleTextAttribute is the Windows API method to set output text colors using different parameters. This function sets the attributes of characters written to the console screen buffer by the WriteFile or WriteConsole functions. The full description of the character attributes can be seen on this page.

Как поменять цвет вывода в c

За установку цвета фона и текста элементов отвечают свойства BackgroundColor и TextColor соответственно. В качестве значение они принимают объект класса Microsoft.Maui.Graphics.Color :

В данном случае для определения цвета применялись встроенные готовые цвета из статического класса Colors.

Установка цвета в .NET MAUI и C#

Кроме встроенных готовых цветов типа Colors.DarkBlue (так называемых именнованных цветов) также для установки цвета мы можем указать и другие значения, можно использовать один из конструкторов класса Color. Некоторые из них:

new Color(float grayShade) : устанавливает тон серого цвета

new Color(float r, float g, float b) : устанавливает компоненты красного, зеленого и синего. Каждая компонента должна иметь значения в диапазоне от 0.0 до 1.0

new Color(byte r, byte g, byte b) : устанавливает компоненты красного, зеленого и синего. Каждая компонента должна иметь значения в диапазоне от 0 до 255

new Color(float r, float g, float b, float a) : добавляет еще один параметр — a , который передает прозрачность и имеет значение от 0.0 (полностью прозрачный) до 1.0 (не прозрачный)

new Color(byte r, byte g, byte b, byte a) : устанавливает компоненты красного, зеленого, синего и прозрачности

BackgtoundColor и TextColor в .NET MAUI и C#

Также для установки цвета мы можем использовать ряд статических методов:

Color.FromArgb(string hex) : возвращает объект Color, созданный по переданному в качестве параметра шестнадцатеричному значению. В качестве значения в метод передается строка в формате «#AARRGGBB», «#RRGGBB», «#ARGB» или «RGB», где A — показатель прозрачности, R — значение для красного цвета, G — значение для зеленого компонента и B — представляет синий цвет

Color.FromRgb(double r, double g, double b) : возвращает объект Color, для которого также устанавливаются компоненты красного, зеленого и синего

Color.FromRgb(int r, int g, int b) : аналогичен предыдущей версии метода, только теперь компоненты красного, зеленого и синего имеют целочисленные значения от 0 до 255

Color.FromRgba(double r, double g, double b, double a) : добавляет параметр прозрачности со значением от 0.0 (полностью прозрачный) до 1.0 (не прозрачный)

Color.FromRgba(int r, int g, int b, int a) : добавляет параметр прозрачности со значением от 0 (полностью прозрачный) до 255 (не прозрачный)

Color.FromHsla(double h, double s, double l, double a) : устанавливает последовательно параметры h (hue — тон цвета), s (saturation — насыщенность), l (luminosity — яркость) и прозрачность.

В xaml мы можем задавать цвет с помощью шестнадцатеричных значений также, как в HTML/CSS:

Управление цветом

Стоит отметить, что у класса Color определено ряд дополнительных методов, которые позволяют управлять цветом. В частности, ряд методов позволяются выполнять преобразования

ToHex : возвращает шестнадцатеричное значение текущего цвета в виде строки.

ToArgbHex : возвращает шестнадцатеричное значение текущего цвета в виде строки в формате ARGB

ToRgbaHex : возвращает шестнадцатеричное значение текущего цвета в виде строки в формате RGBA

ToInt : возвращает числовое ARGB-представление текущего цвета в виде значения int

ToUint : возвращает числовое ARGB-представление текущего цвета в виде значения uint

ToRgb : преобразует текущей цвет в отдельные компоненты RGB типа byte

ToRgba : преобразует текущей цвет в отдельные компоненты RGBA типа byte

ToHsl : преобразует текущей цвет в отдельные компоненты HSL типа float

Кроме того, у класса Color есть ряд дополнительных методов для управления отдельными аспектами цвета

AddLuminosity : добавляет цвету яркость

MultiplyAlpha : умножает альфа-компоненту (прозрачность) цвета на переданное значение типа float

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *