- •1.1. Типы драйверов
- •1.2. Инициализация графики
- •1.2.2. Инициализация и завершение видеорежима
- •1.2.3. Процедуры работы с видеорежимами
- •2. Построение изображений на экране
- •2.1. Система координат
- •2.2. Управление текущим указателем
- •3. Основные процедуры и функции, используемые в графическом режиме
1.2.2. Инициализация и завершение видеорежима
Процедура инициализации InitGraph
Любая программа, предназначенная для работы с графикой, обязательно должна содержать блок вызовов процедур инициализации графического режима и обращение к процедуре его завершения. В таком блоке инициализируется графический режим, проверяется правильность инициализации и, если все операции прошли успешно, разрешается дальнейшая работа программы. Процедура инициализации объявлена следующим образом:
InitGraph (VAR GraphDriver : INTEGER; {тип адаптера}
VAR GraphMode : INTEGER; {режим графики}
VAR DriverPath : STRING); {путь к драйверу}
Переменные GraphDriver и GraphMode задают драйвер и режим в соответствии со значениями, приведенными в предыдущем пункте. Например:
GraphDriver:=EGA; GraphMode:=EGAHi;
В качестве значений каждого из этих параметров можно задавать как имя соответствующей зарезервированной константы, так и ее значение; оба параметра можно устанавливать до вызова процедуры InitGraph.
Если параметр GraphDriver содержит номер конкретного адаптера, то и второй параметр, GraphMode, должен иметь значение режима, допустимого для этого адаптера. Когда GraphDriver присваивается значение константы Detect, система переходит в режим автоопределения. Если возможно переключение системы в графический режим, то инициализируется соответствующий BGI-драйвер и включается режим с максимальным разрешением для данного типа видеоадаптера. В GraphDriver и GraphMode при этом процедура возвратит автоматически определенные значения этих параметров или код ошибки.
Такая установка параметра GraphDriver рекомендуется в тех случаях, когда программа должна работать на разных компьютерах с различными видеоадаптерами. Но этот метод имеет один существенный недостаток: поскольку во время выполнения программы все драйверы одновременно должны находиться в памяти или на диске, для больших программ это может привести к уменьшению скорости работы программы.
Все остальные графические установки (положение текущего указателя, палитра, цвет, параметры графического окна и т.д.) при инициализации принимаются по умолчанию.
В параметре DriverPath указывается путь к каталогу, который содержит необходимые файлы драйверов. Если драйверы находятся в текущем каталоге, этот параметр должен иметь значение ‘ ‘ (пустая строка).
Продемонстрируем применение процедуры InitGraph на следующем примере:
USES Graph;
VAR
GrDriver,GrMode:INTEGER; {определяют драйвер и режим}
BEGIN
GrDriver:=Detect; {режим автоопределения}
InitGraph(GrDriver,GrMode,'');
{предполагается, что драйвер в текущем каталоге}
IF GraphResult < > 0 THEN {ошибка инициализации}
BEGIN
WriteLn('Ошибка инициализации графики!') ;
HALT(l);
END;
SetBkColor(LightBlue); {установлен цвет фона}
ReadLn;
CloseGraph; {завершение графического режима}
END.
В примере, кроме InitGraph, использован ряд других процедур и функций модуля Graph, которые будут рассмотрены ниже.
Процедура CloseGraph
Когда все действия с графикой завершены, необходимо выйти из графического режима. Это делается с помощью не имеющей параметров процедуры CloseGraph.
В процессе своего выполнения эта процедура освобождает память, распределенную под драйверы графики, файлы шрифтов и промежуточные данные, и восстанавливает тот режим работы адаптера, в котором он находился до выполнения инициализации системы. Последующие переключения в графический режим возможны только путем повторной инициализации.