Приведем пример простой графической программы:
1 program GraphTest;
2 uses
3 Graph;
4 var
5 GraphDriver : integer;
6 GraphMode : integer;
7 ErrorCode : integer;
8 begin
9 GraphDriver := Detect; { Установить флаг: выполнить
распознавание }
10 InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');
11 ErrorCode := GraphResult;
12 if ErrorCode <> grOk then { ошибка? }
13 begin
14 Writeln('Ошибка графики: ',GraphErrorMsg(ErrorCode);
15 Writeln('Программа аварийно завершила работу...');
16 Halt(1);
17 end;
18 Rectangle(0, 0, GetMaxX, GetMaxY); { нарисовать рамку
размером в экран }
19 SetTextJustify(CenterText, CenterText); { центрирова-
ние текста }
20 SetTextStyle(DefaultFont, HorizDir, 3);
21 OutTextXY(GetMaxX div 2, GetMaxY div 2, { центр экрана }
22 'Графический интерфейс фирмы Borland (BGI)');
23 Readln;
24 CloseGraph;
25 end. { GraphTest }
Программа начинается с обращения к процедуре InitGraph, ко-
торая автоматически проверяет наличие аппаратуры и загружает со-
ответствующий графический драйвер (находящийся в каталоге C:
DRIVERS). Если графическая аппаратура не распознана или в процес-
се инициализации произошла ошибка, то на экран выводится сообще-
ние об ошибке и программа прекращает работу. В противном случае
вдоль краев экрана рисуется прямоугольник и в центре экрана выво-
дится текст.
Плата AT&T 400 или IBM 8514 не распознается автоматически.
Тем не менее, вы можете пользоваться драйвером графики AT&T путем
отмены автоматической проверки, пересылки исполняемого кода драй-
вера AT&T процедуре InitGraph и установки допустимого графическо-
го режима. Замените 8 и 9 строку в предыдущем примере следующими
тремя строками:
GraphDriver := ATT400;
GraphMode := ATT400Hi;
InitGraph(GraphDriver, GraphMode, 'C:\BP\BGI');
B.Pascal 7 & Objects/LR - 317 -
Это укажет графической системе на необходимость загрузки
драйвера устройства AT&T400, расположенного в каталоге C:\BP\BGI,
и установит графический режим 640 на 400.
Приведем еще один пример, который показывает, как можно пе-
реключаться между графическим и текстовым режимами:
1 program GraphTest;
2 uses
3 Graph;
4 var
5 GraphDriver : integer;
6 GraphMode : integer;
7 ErrorCode : integer;
8 begin
9 GraphDriver := Detect; { Установить флаг: выполнить
распознавание }
10 InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');
11 ErrorCode := GraphResult;
12 if ErrorCode <> grOk then { ошибка? }
13 begin
14 Writeln('Ошибка графики: ',GraphErrorMsg(ErrorCode);
15 Writeln('Программа аварийно завершила работу...');
16 Helt(1);
17 end;
18 OutText('Графический режим. Нажмите ');
19 Readln;
20 RestoreCrtMode;
21 Write('Текстовый режим. Нажмите ');
22 Readln;
23 SetGraphMode(GraphMode);
24 OutText('Снова графический режим. Нажмите ');
25 Readln;
26 CloseGraph;
27 end. { GraphTest }
Заметим, что вызов процедуры SetGraphMode на строке 23 сбра-
сывает все графические параметры (палитра, текущий указатель, ос-
новной и фоновый цвета и т.д.) и им присваиваются принятые по
умолчанию значения.
Вызов CloseGraph восстанавливает первоначально обнаруженный
видеорежим (InitGraph) и освобождает память, используемую графи-
ческим драйвером.