Основы современных компьютерных технологий


Инициализация графики - часть 2


SetGraphMode(Mode: integer);

процедура переводит систему в графический режим и очищает экран.

RestoreCRTMode;

процедура восстанавливает видеорежим, который был до инициализации графики.

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

381

Память видеобуфера подразделяется на видеостраницы. Их количество зависит от текущего режима и типа адаптера. Более одной страницы имеют видеокарты EGA, VGA, Hercules. Нумерация страниц начинается с нуля. В каждый момент времени на экране монитора может быть видимой одна страница. По умолчанию это страница с номером 0. Страница, на которой в данный момент формируется изображение, называется активной.

Для работы со страницами предусмотрены две процедуры: SetActivPage(Page: word) - устанавливает активную страницу для построения изображения, при этом создаваемый рисунок не отображается на экране. После построения изображения можно визуализировать эту страницу при помощи процедуры SetVisualPage(Page: word).

Для предотвращения и нейтрализации ошибок в графическом режиме предусмотрены две функции GraphResult и GraphErrorMsg. GraphResult возвращает значение О (grOK), если последняя графическая операция выполнялась без ошибок. GraphError - возвращает строку сообщения об ошибке, соответствующую коду ошибки.

Приведем последовательность операторов, выполняющих инициализацию графического режима:

Uses Graph;
Var DriverVar, ModeVar :integer;
ErrorCode : integer;
Begin


DriverVar:=Detect;


lnitGraph(DriverVar, Modevar,' ');


ErrorCode:=GraphResult;


IF ErrorCodeOgrOK Then


begin
writeln('Графическая системная ошибка: ',ErrorCode);
Halt(1);
end
End.

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

Uses Graph;
Var DriverVar, ModeVar: integer;
Begin
ClrScr;
Writeln(Текстовый режим');
...
DriverVar:=Detect;
InitGraph(DriverVar, Modevar,'');
OutTextXY(200,100, 'Графический режим');
...
RestoreCRTMode;
Writeln(Текстовый режим');

382

SetGraphMode(ModeVar);
OutTextXY(200,100,'Графический режим');
CloseGraph
End.

Следует иметь в виду, что при переходе из одного режима в другой выполняется очистка экрана. Поэтому при необходимости программист должен сам заботиться о сохранении и восстановлении содержимого экрана или его области.

383

380 :: 381 :: 382 :: 383 :: Содержание




Начало  Назад  Вперед