- •25. Модуль graph
- •25.1. Файлы bgi и содержание модуля Graph.
- •25.2. Инициализация и закрытие графического режима.
- •25.3. Обработка ошибок инициализации.
- •25.4. Классификация и анализ графических режимов.
- •25.5. Диапазоны графических режимов.
- •25.6. Очистка экрана и переключение режимов.
- •25.7. Управление режимом вывода образцов на экран.
- •25.8. Системы координат и текущий указатель.
- •Рисование графических примитивов и фигур. Линии и их
- •25.10. Коэффициент сжатия изображения.
- •25.11. Окружности, эллипсы, дуги.
- •25.12. Построение прямоугольников и ломаных.
- •25.13. Управление цветами и шаблонами заливки.
- •25.14. Заливка областей изображений.
25.3. Обработка ошибок инициализации.
Процедура InitGraph возвращает результат своей работы в параметре GraphDriver. В случае ошибки он может принимать значения:
-2 — нет графического адаптера
-3 — не найден файл драйвера
-4 — ошибка в драйвере (в его коде)
-5 — не хватает памяти для загрузки драйвера
-10 — невозможный режим для драйвера
-15 — нет такого драйвера
Если же ошибок при инициализации не обнаружено, то в параметре GraphDriver возвращается номер адаптера из списка констант.
В модуле Graph реализован ещё один способ проверки результата проведения графической операции. Он осуществляется с помощью функции GraphResult: Integer, которая возвращает код результата последнего вызова одной из процедур или функций модуля.
Таблица кодов, возвращаемых GraphResult, и расшифровка их содержания приведены в литературе. [ ]
Для быстрой выдачи простого сообщения о типе ошибки графической системы используется функция, преобразующая результат вызова функции GraphResult в сообщение, которое можно вывести на экран процедурой Write. Эта функция объявлена как GraphErrorMsg(ErrorCode:Integer): String;
Константы кодов ошибок, определённых в модулеGraph, и соответствующие им сообщения приведены в литературе. [ ]
Простейший блок инициализации графики может выглядеть так:
Uses Graph; {подключен модуль Graph}
Procedure GrInit; {инициализация режима графики}
Var
GraphDriver: Integer; {для графического адаптера}
GraphMode: Integer; {для графического режима}
ErrorCode: Integer; {для кода ошибки}
Begin
GraphDriver:=Detect;
InitGraph(GraphDriver, GraphMode, ‘ ‘); {инициализация}
ErrorCode:= GraphResult; {результат инициализации}
if ErrorCode< > grOk then {если не успешно, то…}
begin
writeln(‘Ошибка графики: ‘,GraphErrorMsg(ErrorCode));
writeln(‘Программа остановлена’);
Exit;
end
End;
{пример инициализации }
Begin
GrInit; {вызов инициализации }
Line(0,0,GetMaxX,GetMaxY); {работа с графикой}
Readln; {пауза до нажатия ввода}
CloseGraph;{закрытие режима графики}
End.
Процедуру GrInit целесообразно записать в отдельный файл и использовать директиву включения этого файла при компиляции.
25.4. Классификация и анализ графических режимов.
Для тестирования графического адаптера в модуле Graph объявлена процедура DetectGraph(Var GraphDriver,GraphMode: Integer). Эта процедура может быть вызвана до инициализации графики. Через формальный параметр GraphDriver возвращается значение константы, определяющей тип графического адаптера, а через параметр GraphMode- значение константы режима.
Эти значения можно подставить в качестве фактических параметров в процедуру InitGraph.
25.5. Диапазоны графических режимов.
Номер текущего графического режима для установленного драйвера определяется функцией GetGraphMode: Integer.
Функция GetMaxMode: Word возвращает номер максимального режима для графического адаптера.
Функция GetModeName(GraphMode: Integer): String возвращает строку, в которой содержится последовательно через пробелы разрешение, имя константы и иногда название палитры (‘640*480 VGA’).
Функция GetDriverName: String позволяет получить имя используемого драйвера.
