DetectGraph (VAR GraphDriver, GraphMode: Integer)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Эта процедура может быть вызвана до инициализации графики. Через формальный параметр GraphDriver возвращается значение из первого столбца таблицы указанной выше таблицы, а через параметр GraphMode - обычно последнее значение из соответствующего раздела второго столбца. Эти значения и рекомендуется подставлять в качестве фактических параметров в процедуру InitGraph. После определения GraphDriver автоматически становится доступным диапазон графических режимов, реализуемых адаптером

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

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

GetGraphMode : Integer ,

Функция

GetMaxMode : Word

возвращает номер максимального режима для графического адаптера; таким образом, каждый драйвер поддерживает диапазон режимов 0...GetMaxMode. Обычно этот же результат можно получить из процедуры

GetModeRange (GraphDriver: Integer; VAR LoMode, HiMode: Integer),

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

Функции GetModeName и GetDriverName.

GetModeName (GraphMode: Word): String. Функция возвращает строку, в которой содержится последовательно через пробелы разрешение, имя константы и иногда название палитры, например, '640x200 CGA'. Представленный пример поможет определить, в каких графических режимах может работать используемая ПЭВМ.

 

USES Graph; {подключен модуль Graph}
{$I initgraf.pas} { процедура инициализации}
VAR  
mode: Integer;  
BEGIN  
Grlnit; { инициализация}
for mode := 0 to GetMaxMode do { показ всех режимов }

OutTextXY(10, 10+mode*10, GetModeName( mode ) );

ReadLn; { пауза до нажатия...}
CloseGraph { закрытие графики}
END.  

 

Функция GetDriverName : String позволяет получить имя используемого драйвера. Ее применение обосновано только в том случае, если в процедуре InitGraph переменная GraphDriver определена, как Detect.

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

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

ClearDevice

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

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

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

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

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

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

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

o переустанавливается активный шрифт и его стиль.

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

Переключение режимов. Оно осуществляется процедурой SetGraphMode ( GraphMode : Integer )

Процедура переключает систему в указанный параметром GraphMode режим и очищает экран монитора. При этом все характеристики устанавливаются по умолчанию. Такие переключения возможны только в рамках текущего драйвера.

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

 

USES Graph;

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

{$I Initgraf.pas}

{процедура инициализации}

CONST

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

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

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

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

BEGIN

 

Grlnit;

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

Line(0,0,GetMaxX,GetMaxY };

{ диагональ экрана}

 OutTextXY(0,100,graph_str);

{ вывод первого сообщения}

ReadLn;

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

RestoreCRTMode;

{восстановление текстового режима}

Write{ text_str );

{ вывод второго сообщения}

ReadLn;

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

SetGraphMode(GetGraphMode);

{восстановление графического режима}

 Une(0,0,GetMaxX,GetMaxY);

{ диагональ экрана }

 OutTextXY(0,100,graph_back);

{вывод третьего сообщения}

ReadLn;

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

CloseGraph

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

End.

 

     

 

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

Дата: 2019-05-29, просмотров: 187.