| gMode := CGACO { работы CGA. }

| end; {if}

| InitGraph(gDriver,gMode, ); { режим CGA }

| Line( 0, 0, 319, 199 ); { работа как на CGA }

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

Рис. 19.3

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

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

GetGraphMode : Integer,

а функция

GetMaxMode : Word

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

- 416 -

GetModeRange( GraphDriver : Integer;

VAR LoMode, HiMode : Integer ),

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

19.2.3.3. Функции GetModeName и GetDriverName. Есть еще одна функция, которая может быть полезна для организации диалогового управления графическими режимами:

GetModeName( GraphMode : Word ) : String

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

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

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

| VAR

| mode : Integer;

| BEGIN

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

| for mode := 0 to GetMaxMode do

| { показ всех режимов }

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

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

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

| END.

Рис. 19.4

Функция

GetDriverName : String

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

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

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

- 417 -

| 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).

- 418 -

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

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

| VAR

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

| BEGIN

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

Перейти на страницу:

Поиск

Похожие книги