Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
141.82 Кб
Скачать

5.2. Модуль graph

Начиная с версии 4.0 в состав Турбо Паскаля включена мощная библиотека графических подпрограмм Graph, остающаяся практически неизмененной во всех остальных версиях. Библиотека содержит в общей сложности более 50 процедур и функций, предоставляющих программисту самые разнообразные возможности управления графическим экраном.

5.2.1. Переход в графический режим и возврат в текстовый.

Стандартное состояние ПК после его включения, а также к моменту запуска программы из среды Турбо Паскаль, соответствует работе экрана в текстовом режиме, поэтому любая программа, использующая графические средства компьютера, должна инициировать графический режим работы дисплейного адаптера. После завершения работы программы ПК возвращается в текстовый режим.

Перед работой с графикой нужно установить наиболее подходящий для имеющегося монитора режим.

Настройка графических процедур на работу с конкретным адаптером достигается за счет подключения нужного графического драйвера. Драйвер -это специальная программа, осуществляющая управление техническими средствами ПК. Графические драйверы, разработанные фирмой Borland, существуют для всех типов адаптеров и обычно располагаются на диске в отдельном подкаталоге BGI в виде файлов с расширением BGI. Турбо Паскаль имеет фиксированное число драйверов, каждый из которых поддерживает от одного до трех видеорежимов.

5.2.2. Инициализация графического режима

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

Формат вызова процедуры в программе:

InitGraph (Driver, Mode, Path);

Здесь Driver - переменная типа Integer, определяет тип графического драйвера; Mode - переменная того же типа, задающая режим работы графического адаптера; Path - выражение типа String, задает маршрут поиска файла драйвера; если он (драйвер) расположен в активном директории, то вместо маршрута ставят два апострофа.

К моменту вызова процедуры на одном из дисковых носителей информации должен находиться файл, содержащий нужный графический драйвер. Процедура загружает этот драйвер в оперативную память и переводит адаптер в графический режим работы.

Константы, определяющие видеорежим, приведены в таблице 1.2 вместе с информацией о выбираемом режиме и типе видеоадаптера, который может такой режим поддерживать.

Таблица 1.2

Драйвер

Режим

Разрешение

Файл

CGA(1)

EGA(3)

VGA(9)

SVGA

CGACo, CGAHi

EGALo, EGAHi

VGALo, VGAHi

320200, (640200)

640200, (640350)

640200, (640350)

800600 и более

CGA.BGI

EGAVGA.BGI

EGAVGA.BGI

EGAVGA.BGI

Если тип адаптера ПК неизвестен или программа рассчитана на работу с любым адаптером, используется обращение к процедуре InitGraph с требованием автоматического определения типа драйвера:

Driver:= Detect;

InitGraph (Driver, Mode, Path);

После такого обращения устанавливается графический режим работы экрана, а при выходе из процедуры переменные Driver и Mode содержат целочисленные значения, определяющие тип драйвера и режим его работы. При этом для адаптеров, способных работать в нескольких режимах, выбирается старший режим, т.е. тот, что закодирован максимальной цифрой. Например, при работе с CGA-адаптером, обращение к процедуре со значением Driver=Detect вернет переменной Driver значение 1 (CGA) и переменной Mode – значение 4 (CGAHi), а такое же обращение к адаптеру VGA вернет переменной Driver значение 9 (VGA) и переменной Mode –значение 2 (VGAHi).

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

Функция GraphResult. Функция GraphResult возвращает значение типа Integer (0), если последняя графическая операция выполнялась без ошибок, или число в диапазоне -14, ... , -1, если ошибка была.

Коды ошибок, допущенных при обращении к графическим процедурам, приведены в таблице 1.3.

Таблица 1.3

Константа

Значение

Описание

GrOK

GrNolnitGraph

grNotDetected

grFileNotFound

grInvalidDriver

grNoLoadMem

grNoScanMem

grNoFloodMem

grFontNotFound

grNoFontMem

grInvalidMode

grError

grIOerror

grInvalidFont

grInvalidFontNum

0

–1

–2

–3

–4

–5

–6

–7

–8

–9

–10

–11

–12

–13

–14

Нет ошибок

Графика не инициализирована

Графическое устройство не обнаружено

Файл драйвера устройства не найден

Неправильный файл драйвера устройства

Не хватает памяти для загрузки драйвера

Выход за пределы памяти при заполнении

(scan fill)

Выход за пределы памяти при заполнении

(flood fill)

Файл шрифта не найден

Недостаточно памяти для загрузки шрифта

Неверный графический режим драйвера

Графическая ошибка

Ошибка графического ввода-вывода

Неверный файл шрифта

Неверный номер шрифта

Функция GraphErrorMsg. Функция GraphErrorMsg возвращает значение типа String, в котором по указанному коду ошибки дается соответствующее текстовое сообщение.

Формат обращения к функции в программе:

T:= GraphErrorMsg (<код ошибки>);

T – переменная типа string.

Фрагмент программы, в которой инициализируется графический режим и выполняется проверка, допущены ли при этой инициализации ошибки (и какого характера ) или нет :

. . . . . . .

uses Crt, Graph;

var Driver, Mode, ErrorCode: integer;

begin ClrScr; Driver:=Detect;

InitGraph (Driver, Mode, ' '); ErrorCode:=GraphResult;

If ErrorCode < > 0 then

begin Writeln (' Графическая системная ошибка: ');

Writeln (GraphErrorMsg (ErrorCode)); Halt (1)

end

end.

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

Формат вызова процедуры в программе:

CloseGraph ;

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

Формат вызова процедуры в программе:

RestoreCRTMode;

Функция GetGraphMode. Функция GetGraphMode возвращает значение типа Integer, в котором содержится код установленного режима работы графического адаптера.

Формат обращения к функции в программе:

T:= GetGraphMode ;

Переменная T типа integer.

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

Формат обращения к процедуре в программе:

SetGraphMode (< Mode>);

Переменная Mode - код устанавливаемого режима.

Процедура DetectGraph. Процедура DetectGraph возвращает тип драйвера и режим его работы.

Формат обращения к процедуре в программе:

DetectGraph(Driver, Mode);

В отличие от функции GetGraphMode, описываемая процедура возвращает переменной Mode максимально возможный для данного адаптера номер графического режима.

Функция GetDriverName. Функция GetDriverName возвращает значение типа String, содержащее имя загруженного графического драйвера.

Формат обращения к функции в программе:

S:= GetDriverName;

Переменная S типа string.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]