Начало работы
Приведем пример простой графической программы:
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');
Это укажет графической системе на необходимость загрузки драйвера устройства 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('Графический режим. Нажмите <RETURN>'); 19 Readln; 20 RestoreCrtMode; 21 Write('Текстовый режим. Нажмите <RETURN>'); 22 Readln; 23 SetGraphMode(GraphMode); 24 OutText('Снова графический режим. Нажмите <RETURN>'); 25 Readln; 26 CloseGraph; 27 end. { GraphTest }
Заметим, что вызов процедуры SetGraphMode на строке 23 сбра- сывает все графические параметры (палитра, текущий указатель, ос- новной и фоновый цвета и т.д.) и им присваиваются принятые по умолчанию значения.
Вызов CloseGraph восстанавливает первоначально обнаруженный видеорежим (InitGraph) и освобождает память, используемую графи- ческим драйвером.