Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO_PASCAL.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
8.23 Mб
Скачать

19.2.4. Очистка экрана и переключение режимов

19.2.4.1. Очистка графического экрана. Две следующие процедуры выполняют почти одинаковые действия, только первая из них {416}

USES Graph; { подключен модуль Graph }

{$I initgraf.pas} { процедура инициализации }

BEGIN

GrInit; { инициализация графики }

OutTextXY( 40, 40, { выводится имя драйвера: } 'У меня используется драйвер типа ' + GetDriverName );

ReadLn; { пауза до нажатия ввода }

CloseGraph { закрытие режима графики }

END.

Рис. 19.5

является как бы подмножеством второй:

ClearDevice

очищает графический экран и устанавливает указатель позиции в положение (0, 0), а процедура

GraphDefaults

кроме очистки экрана, устанавливает ряд параметров графической системы:

  1. графическое окно становится равным размеру экрана;

  2. восстанавливается системная цветовая палитра;

  3. переназначаются цвета основных линий и фона экрана;

  4. толщина и стиль линий принимаются как по умолчанию;

  5. цвет и шаблон заливки геометрических фигур и замкнутых ломаных принимается как по умолчанию;

6) переустанавливается активный шрифт и его стиль. Процедура GraphDefaults неявно вызывается при инициализации графики и выполняет, no-сути, все стартовые установки графических параметров.

19.2.4.2. Переключение режимов. Оно осуществляется процедурой

SetGraphMode(GraphMode : Integer),

которая переключает систему в указанный параметром GraphMode графический режим и очищает экран монитора. При этом все дополнительные характеристики устанавливаются по умолчанию. Чтобы предостеречь от ошибок, вызванных кажущейся простотой переключения, укажем, что такие переключения возможны только в рамках текущего драйвера — иначе необходимо реинициализировать систему (рис. 19.6). {417}

USES Graph; { подключен модуль Graph }

{$I initgraf.pas} { процедура инициализации }

VAR

mode, modeLo, modeHi : Integer; { номера режимов }

BEGIN

GrInit; { инициализация }

GetModeRange(CurrentDriver,modeLo,modeHi); { диапазон }

for mode:=modeLo to modeHi do begin { цикл по режимам }

SetGraphMode( mode ); { включение режима }

Line( 0, 0, 639, 479); { рисование линии }

ReadLn { ожидание ввода }

end; {for}

CloseGraph { закрытие графики }

END.

Рис. 19.6

19.2.4.3. Процедура RestoreCRTMode. При написании некоторых пакетов, использующих и графические, и текстовые режимы работы ПЭВМ, может оказаться полезной процедура RestoreCRTMode, которая возвращает систему в текстовый режим, работавший до инициализации графики. Казалось бы, уже есть процедура с подобным действием — CloseGraph. Однако после нее возврат в графический режим должен проводиться через процедуру InitGraph, что довольно сложно (см. рис. 19.1). Если же воспользоваться процедурой RestoreCRTMode, то возвращение в графику будет достаточно простым (рис. 19.7).

USES Graph; { подключен модуль Graph }

{$I initgraf.pas} { процедура инициализации }

CONST { константы-сообщения: }

graph_str = 'Это графический режим';

text_str = 'А это текстовый режим’;

graph_back = 'А это снова графический режим';

BEGIN

GrInit; { инициализация графики }

Line(0,0,GetMaxX,GetMaxY ); { диагональ экрана }

OutTextXY(0,100,graph_str); { вывод первого сообщения } ReadLn; { пауза до нажатия ввода }

RestoreCRTMode; { восстановление текстового режима } Write( text_str ); { вывод второго сообщения }

ReadLn; { пауза до нажатия ввода }

Рис. 19.7 {418}

SetGraphMode(GetGraphMode); { восстановление графи- }

{ ческого режима }

Line(0,0,GetMaxX,GetMaxY); { диагональ экрана } OutTextXY(0,100,graph_back); {вывод третьего сообщения } ReadLn; { пауза до нажатия ввода }

CloseGraph { закрытие графики }

END.

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

Как видно из примера, обратное переключение осуществляется при помощи функции GetGraphMode, которая возвращает номер текущего графического режима. При работе RestoreCRTMode выгрузки графического драйвера не происходит, т.е. он остается в памяти активным. Это и есть основное преимущество процедуры RestoreCRTMode. Предупреждаем, что обратное включение графики устанавливает в исходное состояние все графические параметры модуля Graph. Кроме того, подобные переключения, к сожалению, сбрасывают изображение с экрана.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]