русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Переменная TextAttr


Дата добавления: 2015-06-12; просмотров: 1627; Нарушение авторских прав


Переменная TextAttr имеет тип Byte и может принимать значения от 0 до 255. В ней хранятся текущие цветовые атрибуты для фона, символов и атрибут мерцания символов. Каждый из восьми битов переменной TextAttr содержит определенную информацию (табл. 15.4).

Таблица 15.4

Номер бита 6 5 4 3 2 1 0
Что определяет Мерцание 1 — да 0 — нет Цвет фона (8 значений) 0*16..7*16 Цвет символов (16 значений, от 0 до 15)
Компонент цвета (RGB)   Крас Зел Гол Ярк Крас Зел Гол

Зная структуру этого байта, можно написать три функции опроса текущего цветового режима (рис. 15.5).

PROGRAM Test_Colors; { анализ текущих цветов } USES CRT; { подключен модуль CRT } {Бит номер 7(2^7 = 128) содержит 1(True) или 0 (False)?} FUNCTION IsBlinking: Boolean; { проверка мерцания } BEGIN IsBlinking := ( TextAttr and 128 ) = 128; END;

Рис. 15.5 {323}

{Число в битах 4,5,6 (2^4+2^5+2^6=112), деленное на 16 } FUNCTION GetBackGround : Byte; { номер цвета фона } BEGIN GetBackGround := ( TextAttr and 112 ) div 16; END; {Число в битах 0, 1, 2 и 3 (1 + 2^1 + 2^2 + 2^3 = 15) } FUNCTION GetForeGround : Byte; { код цвета символа } BEGIN GetForeGround := TextAttr and 15; END; BEGIN { Вызовы функций } WriteLn( ' Мерцание : ', IsBlinking 5, ' Цвет фона : ', GetBackGround 2, ' символов : ', GetForeGround 2 ); ReadLn { пауза до нажатия клавиши ввода } END.

Рис. 15.5 (окончание)

Переменную TextAttr можно использовать для управления цветовым режимом вывода символов на экран, с помощью формулы

TextAttr := ЦветСимволов(0..15)+16*ЦветФона(0..7) [+128]

Запись [+128] означает необязательный атрибут мерцания. Когда 128 добавлено, надпись будет мерцать. Если использовать такую форму установки цвета, то становятся почти «бесполезными» процедура TextColor и TextBackGround, которые, вообще говоря, всего лишь изменяют соответствующие биты системной переменной TextAttr.



При «ручном» задании цвета, как это было сделано выше, вместо цифр можно указывать цветовые константы, определяемые модулем CRT (они рассматриваются вместе с процедурами TextColor и TextBackGround), например:

TextAttr: = White + 16 * Red + Blink;

Такая формула задает мерцающий белый цвет на красном фоне.

Некоторые особенности возникают при использовании монохромных мониторов (режим Mono). Они способны отображать лишь три градации яркости: «черный», «белый» и «ярко-белый». Название градаций яркости взято в кавычки потому, что реально цвет может быть серым, зеленым или красным в зависимости от монитора. Текст может быть инверсным или подчеркнутым. Все эти атрибуты по-прежнему задаются в переменной TextAttr, но их кодировка уже иная: {324}

 

Номер бита 6 5 4 2 1
Что определяет Мерцание 1 — да 0 — нет Цвет фона/ инверсия Яркость 1 — да 0 — нет Цвет символа Подчеркивание 1 — да 0 – нет

Строго говоря, возможны лишь определенные значения атрибута:

0 (00000000) – черные символы на черном фоне;

1 (00000001) – подчеркнутые неяркие символы, черный фон;

7 (00000111) – неяркие символы на черном фоне;

9 (00001001) – подчеркнутые яркие символы, черный фон;

15 (00001111) – яркие символы на черном фоне;

112 (01110000) – инверсные цвета (черный на светлом);

127 (01111111) – инверсные цвета (яркие на светлом).

Добавление 128 к этим значениям заставит символы (но не фон!) мерцать.

Прочие комбинации битов дадут те же яркостные сочетания, хотя правила взаимодействия битов здесь далеко не прозрачные. Бит мерцания влияет только на мигание символов. Подчеркивание (бит 0) работает только, когда в битах 6, 5, 4, 2 и 1 стоят нули. В третьем бите может быть единица, добавляющая яркость подчеркнутым символам. Далее не легче: если в битах фона 6, 5, 4 есть хоть одна единица, а в битах 0, 1, 2 — нули, то будет инверсный цвет: черный по белому; если же в биты 0, 1, 2 попадет хоть одна единица, то цвета сольются: будет неяркий белый по белому. И, наконец, если в битах фона что-либо есть, бит 3 (яркость) равен единице и в битах цветов символов 0, 1, 2 есть хотя бы одна единица, то будет инверсное изображение — ярко-белое по белому.



<== предыдущая лекция | следующая лекция ==>
Переменные управления работой клавиатуры | Процедуры и функции модуля CRT


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.427 сек.