Используемый в ПК дисплей состоит из двух основных частей: монитора, содержащего экран, и блока управления, который называют дисплейным адаптером или просто адаптером.
Исторически первым адаптером был монохромный адаптер, имеющий скромные возможности - он позволял выводить только текстовые сообщения в одном из двух форматов: 25 строк по 40 или по 80 символов в строке. Символы выводились в прямом изображении (светлые символы на темном фоне), причем их ширина оставалась одинаковой в обоих режимах. Поэтому в режиме 40x25 была задействована только левая половина экрана.
Позднее появились адаптер HGC, который мог еще и воспроизводить графические изображения с разрешением 720x350 точек (пикселов), и цветной графический адаптер CGA, позволяющий выводить как текстовые сообщения, так и графические изображения с разрешением 320x200 или 640x350 пикселов. В текстовом режиме выводились 40x25 или 80x25 символов как в монохромном, так и в цветном изображении.
Для задания одного из возможных текстовых режимов адаптера служит процедура TextMode (Mode: word);
Здесь Mode – код текстового режима. В качестве значения этого выражения могут использоваться следующие константы, определенные в модуле Crt (см. табл. 14.1).
По умолчанию устанавливается режим 3(СО80).
При вызове процедуры TextMode код установленного режима запоминается в стандартной переменной LastMode : word, которая может быль использована как для проверки так и для установлении текстового режима при возвращении из графического.
Write(‘Номер текстового режима’,LastMode);
TextMode (LastMode);
При работе с экраном через модуль Crt весь экран разбивается на отдельные неделимые прямоугольные элементы. Для каждого элемента можно задать цвет фона (задний план) и цвет символа (передний план). Кроме того, в случае необходимости символ можно сделать мерцающим. Вся эта информация (атрибуты символа) размещается в одном байте информации так, как показано на рис. 14.1.
На этом рисунке буквой М обозначен бит мерцания (символ мерцает, если в этом бите установлена единица), буквами Ф – биты с кодом цвета фона (биты 4-6), и буквами С - биты с кодом цвета символа (биты 0-3).
Для управления цветом символов и фона служат процедуры
TextColor (Color:Byte); и TextBackground(Color:Byte).
Параметр этих процедур может принимать следующие значения (константы определены в модуле Crt):
Текущие атрибуты текста хранятся в стандартной переменной TextAtt:Byte.
Следующий пример иллюстрирует цветовые возможности ТР.
uses Crt;
const col: array [1..6] of string[16] =
(’синий’,’зеленый’,’голубой’,’красный’,
’фиолетовый’,’коричневый’);
var i:Byte;
begin
for i:=1 to 6 do {Выводим 6 сообщений
разными цветами}
begin
TextColor(i);
writeln(’Цвет ’, i, ’ - ’, col[i]);
end;
TextColor(White+Blink); {Белые мигающие символы}
writeln(’ Мерцание символов’);
{Восстанавливаем стандартный цвет}
TextColor(LightGray);
writeln;
end.
Модуль Crt позволяет не только работать со всем экраном, но и выделять в нем прямоугольные окна. Процедура Window определяет текстовое окно - область экрана, которая в дальнейшем будет рассматриваться процедурами ввода-вывода как весь экран.
Window (x1,y1,x2,y2: byte);
Здесь x1,y1,x2,y2 - координаты левого верхнего и правого нижнего угла.
Процедура window задает размеры окна на экране и помещает курсор в левый верхний угол окна.
Обращение к процедуре игнорируется, если какая-либо из координат выходит за границы экрана или если нарушается одно из условий: x2>x1 и y2>y1.
Если на экране активизировано окно, то все координаты определяются относительно границ окна, за исключением самой процедуры window (здесь координаты всегда задаются относительно границ экрана). При работе в окне координаты отсчитываются от левого верхнего угла окна.
Процедура ClrScr очищает экран или окно. После обращения к ней экран (окно) заполняется цветом фона, курсор устанавливается в левый верхний угол.
Процедура GotoXY переводит курсор в нужное место экрана или текущего окна.
GotoXY (x,y:byte);
Здесь x, y –новые координаты курсора. Координаты задаются относительно границ экрана (окна).
Обращение к процедуре игнорируется, если какая-либо из новых координат выходит за границы экрана.
Функции WhereX и WhereY служат для определения текущих координат курсора (определяются, соответственно, горизонтальная и вертикальная координаты).
Процедура HighVideo устанавливает высокую яркость символов, выводимых далее на экран (заменяет цвета 0-7 на цвета 8-15).
Процедура LowVideo устанавливает малую яркость символов, выводимых далее на экран (заменяет цвета 8-15 на цвета0-7).
Процедура NormVideo устанавливает первоначальную яркость символов, выводимых далее на экран.
|