Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
47
Добавлен:
01.04.2025
Размер:
5 Мб
Скачать
☆

Тема 11.2. Стандартные процедуры и функции Unit Graph. Методы создания анимации.

Цель: Научиться разрабатывать алгоритмы и программы с использованием процедур и функций модуля Graph.

Модуль Graph представляет собой библиотеку из 80 подпрограмм, обеспечивающих построение графических изображений на плоскости. Для того чтобы дисплей перевести в графический режим работы, используется процедура инициализации. После его установки ваши программы при помощи стандартных подпрограмм модуля Graph могут рисовать различные фигуры любым цветом, создавать подвижные изображения, а также выводить текст и генерировать звуки, как и при текстовом режиме. По окончании работы с графикой графический режим необходимо закрыть специальной процедурой. Приведённая ниже программа предназначена для инициализации графического режима. Её начальный фрагмент можно включать во все программы, использующие графический режим.

Uses Graph;

Var

GraphDiver, GraphMode, ErrorCode:Integer;

begin

{задание параметров и вызов процедуры

инициализации графического режима}

GraphDiver:=Detect;

InitGraph(GraphDiver, GraphMode,′ ′);

{проверка результата выполнения проце-

дуры инициализации}

ErrorCode :=GraphResult;

if ErrorCode <>qrOk then

begin

{графический режим не установлен. Вывод

сообщения об ошибке}

Writeln(′Ошибка графики: ′,GraphErrorMsq(ErrorCode);

Writeln(′Программа аварийно завершила работу. .′);

Exit;

end;

{графический режим установлен, рисова-

ние прямоугольника}

Rectangle (0, 0, GetMaxX, GetMaxY);

Readln;

CloseGraph; {закрытие графического режима

Для определения того, установлен графический режим после выполнения процедуры InitGraph или нет, в программе использована функция GraphResult, которая возвращает целое число, называемое кодом ошибки.

Код ошибки формируется после выполнения каждой процедуры и функции модуля, в том числе и процедуры InitGraph. Если процедура выполнилась правильно, то код ошибки равен нулю. Ниже приведены значения кодов, ус-

танавливаемых при появлении ошибок:

1– графический режим не установлен (не выполнена процедура Init-

Graph);

2 – не найдено аппаратное обеспечение;

3 – не найден файл драйвера устройства;

4 – неверный файл драйвера устройства;

5 – не хватает памяти для загрузки драйвера;

6 – выход за границы памяти при сканировании области закрашивания;

7 – выход за границы памяти при заполнении закрашиваемой области;

8 – не найден файл шрифта;

9 – не хватает памяти для загрузки шрифта;

10 – устанавливаемый режим для выбранного драйвера является не

доступным.

Таким образом, если значение, возвращаемое функцией GraphResult, не равно 0, то графический режим не установлен.

Последней выполняется процедура CloseGraph, которая завершает работу в графическом режиме, закрывая все созданные временные файлы и освобождая занятые подпрограммами модуля Graph области памяти.

Для компиляции программы, использующей модуль Graph, требуется наличие файла GRAPH.TPU, а для выполнения – один или более графических драйверов (файлы .BGI) и файлов шрифтов (.CHR).

Более подробно процедуры модуля Graph будут рассмотрены ниже. Но при их использовании следует учитывать, что верхний левый угол экран имеет координату (0,0). У правого столбца больше координата Х, у нижней строки больше координата Y, т.е. координата Х увеличивается при перемещении вправо, а координата Y – при перемещении вниз. Таким образом, координаты каждого из четырёх углов и конкретной точки (середины экрана) при работе в режиме VGAHi будут выглядеть как на рис.

Процедуры и функции модуля Graph

1. Управление графическим режимом

Процедура InitGraph (Var GraphDriver ,GraphMode:Integer ; DriverPath: String) инициализирует графическую систему и устанавливает графический режим. Процедура SetGraphMode (Mode:Integer) устанавливает графический режим.

Процедура GraphDefaults восстанавливает исходные параметры графического режима.

Процедура DetectGraph (Var GraphDriver, Graphmode: Integer) возвращает номер графического драйвера и режима.

Функция GraphResult:Integer возвращает код ошибки последней выпол-

ненной графической операции.

Функция GraphErrorMsg (ErrCode:Integer): String возвращает сообще-

ние, соответствующее коду ошибки ErrCode.

Процедура CloseGraph прекращает работу графической системы.

Функция GetDriverName:String возвращает имя установленного графиче-

ского драйвера.

Функция GetMaxMode:Integer возвращает число режимов установленно-

го драйвера.

Функция GetGraphMode:Integer возвращает номер текущего графическо-

го режима.

Функция GetModeName(ModeNumber:Word):String возвращает имя гра-

фического режима по заданному номеру.

Процедура GetModeRange (GpaphDruver:Integer; Var LoMode, Hi-

Mode:Integer) возвращает максимальный и минимальный номера режимов

заданного драйвера.

Процедура SetGraphBufSize(Bufsize:Word) устанавливает размер экрана,

использующегося при построении фигур.

Процедура RestoreCrtMode восстанавливает текстовый режим.

Функция RegisterBGIDriver(Driver:Pointer):Integer возвращает номер,

присваиваемый графическому драйверу, встраиваемому пользователем.

Функция RegisterBGIFont(Font:Pointer):Integer возвращает номер, при-

сваиваемый графическому шрифту, встраиваемому пользователем.

Функция InstallUserDriver(Name:String; AutoDetectPtr:Pointer):Integer

возвращает номер подключаемого нестандартного драйвера пользователя.

Функция InstallUserFont(FontFileName:String):Integer возвращает номер

подключаемого нестандартного шрифта пользователя.