Для любознательных. Текстовый режим. Модуль CRT. Работа с цветом. Работа с экраном и курсором 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Для любознательных. Текстовый режим. Модуль CRT. Работа с цветом. Работа с экраном и курсором



Средства управления экраном образуют один из важнейших элементов программирования для IBM-совместимых персональных компьютеров, что обусловлено прежде всего необходимостью организации удобного взаимодействия программы с ее пользователем. Любая сколько нибудь серьезная программа в настоящее время должна иметь достаточно развитый и продуманный экранный "видеообраз", с помощью которого реализуется интерфейс с пользователем.

Рассмотрим общие принципы организации отображения информации на экран дисплея. Формирование изображений на экране производится дисплейным адаптером, который представляет собой специализированный микропроцессор с собственной памятью, регистрами и наборами команд. Интерфейс с адаптером реализуется ядром операционной системы (BIOS), который управляет адаптером, записывая значения в его память, устанавливая состояние регистров и инициируя выполнение команд. Со своей стороны BIOS предоставляет прикладным программам (и операционной системе) возможности управления дисплейным адаптером посредством функций прерывания 10h (видеосервис). Некоторые из них мы рассмотрим.

Заметим, что память дисплейного адаптера включена в общее пространство компьютера и тем самым доступна напрямую и для прикладных программ. Данное обстоятельство весьма существенно, так как содержимое этой памяти непосредственно отображается на экране. Зная правила "кодирования" изображения в памяти адаптера и адреса этой памяти, можно формировать картину на экране, записывая в оперативную память те или иные значения.

Дисплейная аппаратура ориентирована на два режима работы: текстовый и графический. В текстовом режиме рабочее пространство экрана рассматривается как совокупность строк, каждая из которых содержит определенное число позиций (знакомест). В каждой позиции может быть отображен один из 256 стандартных ASCII-символов. Текстовый режим может иметь несколько вариантов, различающихся количеством и длиной экранных строк (наиболее распространенным является размер 25 строк по 80 символов в каждой).

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

Модуль CRT

Модуль CRT представляет собой библиотеку функций и процедур, предназначенных для увеличения возможностей текстового ввода-вывода данных. В отличие от стандартного ввода-вывода, когда он осуществляется через операционную систему, подпрограммы модуля CRT работают с BIOS, и даже непосредственно с видеопамятью.

Для того чтобы стали доступны находящиеся в модуле процедуры и функции, необходимо явно указать модуль CRT командой

Uses

Crt;

Модуль CRT сравнительно невелик и содержит средства, позволяющие:

- устанавливать определенный текстовый режим;

- управлять перемещением курсора на экране;

- выводить на экран информацию;

- задавать цветовые атрибуты выводимых символов;

- организовывать простой оконный дизайн экрана.

Кроме этого, в модуле имеются средства взаимодействия с клавиатурой, процедуры элементарного управления звуком, а также некоторые другие примитивы.

Примечание. Относительная компактность модуля CRT находится в очевидном противоречии с весьма широким спектром возможностей современных адаптеров. Иными словами, за рамками этого модуля остается много средств управления экраном. Поэтому, практически любая программа с развитой экранной компонентой использует, наряду со штатными средствами модуля CRT, дополнительные возможности адаптера, не поддерживаемые этим модулем. Многие сервисные пакеты независимых фирм, ориентированные на Turbo Pascal (например, Power Tools Plus, Object Professional), содержат расширенные варианты модуля CRT. На следующем занятии мы рассмотрим некоторые дополнительные возможности управления экраном, существенные в практической работе.

Итак, мы уже знаем, что при работе с экраном через модуль CRT весь экран разбивается на отдельные строки, а каждая строка ­ на отдельные позиции, в каждую из которых можно поместить один символ. Таким образом экран разбивается на отдельные прямоугольные элементы.

Рассмотрим допустимые текстовые режимы адаптера и технику их установки в Turbo Pascal- программах.

В общем случае модуль CRT поддерживает пять базовых вариантов текстового режима и еще несколько дополнительных.

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

Procedure TextMode (Mode: word);

где Mode – код текстового режима, который может принимать следующие значения:

- BW40=0 – 40х25 черно-белый режим для цветного адаптера,

- CO40=1 – 40х25 цветной режим для цветного адаптера,

- BW80=2 – 80х25 черно-белый режим для цветного адаптера,

- CO80=3 – 80х25 цветной режим для цветного адаптера,

- MONO=7 – 80х25 монохромный для черно-белого адаптера,

Например,

TextMode (СО80);

TextMode (7);

Перечисленные режимы действительны для двух наиболее распространенных в настоящее время адаптеров VGA и EGA.

Кроме данных режимов, для VGA/EGA-адаптеров допускаются их модификации, дающие возможность увеличит количество строк, выводимых на экран. Дело в том, что разрешающая способность этих адаптеров (то есть число пикселов по горизонтали и вертикали) позволяет строить символы в виде матриц пикселов 8х14 (для EGA) и 8х16 (для VGA). Иными словами, каждый символ строится из 14 или 16 рядов пикселов. Если же использовать для символов сокращенные матрицы размером 8х8 пикселов, то на экране можно разместить соответственно 43 или 50 строк символов, что дает возможность выводить на экран значительно больше информации.

Чтобы переключиться на уплотненный режим, необходимо подать в процедуру TextMode модифицированный параметр – значение требуемого режима, увеличенное на 256. Для удобства и большей наглядности в модуле имеется соответствующая константа:

- FONT8X8=256 – используется для загружаемого шрифта в режиме 80х43 или 80х50 с адаптерами VGA и EGA.

Рассмотрите пример переключения дисплея в режим цветного отображения с 43/50 строками:

TextMode (СО80+FONT8X8)

Примечание. Многие программные системы допускают возможность настройки на тот или иной режим. В частности, интегрированная среда Turbo Pascal позволяет устанавливать как обычный, так и уплотненный режимы дисплея (переключатель Screen sizes диалоговом окне Preferences – команда Options/Environment/Preferences).

При инициализации программы, использующей модуль CRT, значение текстового режима устанавливается автоматически, исходя из реальной аппаратуры компьютера.Текущее значение установленного режима всегда хранится в переменной LastMode из интерфейса модуля CRT. Даже в случае переключения в графический режим это значение сохраняется и может быть использовано для возврата в текстовый режим, например, TextMode (LastMode).

Рассмотрим подробнее процедуры и функции модуля CRT.

Процедуры управления цветом

TextBackGround(Color: byte) – процедура задает цвет фона Color.

TextColor(Color: byte) – процедура задает цвет символов Color.

HighVideo – процедура устанавливает высокую яркость символов (заменяет цвета 0-7 на цвета 8-15), выводимые далее на экран.

LowVideo – процедура устанавливает малую яркость символов (заменяет цвета 8-15 на цвета 0-7), выводимые далее на экран.

NormVideo - процедура устанавливает первоначальную яркость символов, выводимые далее на экран.

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

Использование цвета при разработке видеоинтерфейсов программ, отображение результатов и т.п. является важным средством повышения удобства работы с программой, улучшения восприятия информации и в конечном итоге служит повышению производительности труда. Разумное и продуманное использование цвета может заметно повысить привлекательность программы и более наглядно выявить ее преимущества.

Цветные дисплеи персональных компьютеров позволяют в текстовом режиме выводить информацию на экран, используя фиксированный набор цветов. Различаются цвета самих символов и цвета фонов символов – областей знакомест, не занятых символами.Возможно независимое управление цветовыми характеристиками всех знакомест экрана. Базовый набор допустимых цветов составляет 16 цветов для символов, 8 цветов из этого набора можно задавать для фонов символов. Цвета кодируются последовательными числами от 0 до 15; эта кодировка определяется устройством дисплейной аппаратуры компьютера и поэтому не зависит от языка программирования.

Сonst

{Коды, допустимые для текста и фона}

Black =0; {Черный}

Blue =1; {Синий

Green =2; {Зеленый}

Cyan =3; {Голубой}

Red =4; {Красный}

Maganta =5; {Пурпурный}

Brown =6; {Коричневый}

LightGray =7; {Серый}

{Коды, допустимые только для текста}

DarkGray =8; {Темно-серый}

LightBlue =9; {Ярко-синий}

LightGreen =10; {Ярко-зеленый}

LightCyan =11; {Ярко-голубой}

LightRed =12; {Ярко-красный}

LightMaganta =13; {Ярко-пурпурный}

Yellow =14; {Ярко-желтый}

White =15; {Белый}

Для того, чтобы вывести на экран текст с определенными цветовыми характеристиками, в языке Turbo Pascal принята следующая техника: сначала устанавливаются текущие цветовые атрибуты, после чего все тексты, выводимые процедурами write и writeln на экран, используют заданные текущие атрибуты, до тех пор, пока они не будут переопределены. Текущий цвет и фон символов задаются процедурами TextColor и ТextBackground, которые устанавливают соответственно, текущий цвет для выводимых символов и текущий фон для них. Эти процедуры вызываются с одним параметром, который представляет значение нужного цвета (можно использовать одну из представленных выше констант, ее числовое значение или произвольное выражение, вырабатывающее целое значение в диапазоне от 0 до 15).

Помимо цвета, для символов можно задавать периодическое изменение яркости свечения, которое воспринимается как мерцание символа (мерцает только символ; фон остается неизменным). Как правило, кратковременная установка мерцания используется для вывода важных сообщений, имитации работающих электронных часов и т.п. Чтобы задать мерцание для выводимого далее текста, нужно увеличить значение параметра процедуры TextColor на 128; для большей наглядности этой операции наряду с кодами цветов в модуле CRT имеется соответствующая константа мерцания:

Const

Blink =128;

Задание. Наберите на компьютере и внимательно рассмотрите представленную ниже простую демонстрационную программу, иллюстрирующую технику управления цветами.

Program DemoColors;

Uses

Crt;

Begin

writeln('По умолчанию выводятся белые символы на черном фоне');

TextColor(Yellow);

ТextBackground(Blue);

writeln('Желтые символы на синем фоне');

TextColor(Red);

ТextBackground(LightGray);

writeln('Красные символы на сером фоне');

TextColor(White+Blink);

ТextBackground(Red);

writeln('Белый мерцающий текст на красном фоне');

TextColor(Yellow);

ТextBackground(Blue);

writeln('A');

TextColor(Red);

ТextBackground(LightGray);

writeln('B');

TextColor(White);

ТextBackground(Red);

writeln('C');

End.



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 126; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.223.123 (0.02 с.)