Скачиваний:
52
Добавлен:
02.05.2014
Размер:
601.05 Кб
Скачать

6

2.2.2 Модуль GRAPH

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

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

Инициализация графического режима выполняется процедурой InitGraph.

2.3.1 Запуск графической системы.

Для запуска графической системы необходимосделать следующее:

1.Подключить модуль GRAPH — библиотеку графических процедур: USES Graph;

2.Установить графический режим с помощью двух переменных и инициализировать графическую систему :

VAR DriverVar, ModeVar : Integer; BEGIN

DriverVar := Detect;

InitGraph(DriverVar , ModeVar, '<путь к файлу драйвера>');

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

Таблица 1

Константы графических драйверов

Константа

Значение

CurrentDrivgr

-128

Detect

0

CGA

1

MCGA

2

EGA

3

EGA64

4

EGAMono

5

IBM8514

6

HercMono

7

ATT400

8

VGA

9

PC3270

10

7

 

 

 

 

Таблица 2

 

 

Константы графических режимов

 

Имя

Зна-

Строк *

Па-

Цвета

Кол-во

константы

чение

столбцов

литра

страниц

АТТ400С0

0

320*200

0

Светло-серый, светло-красный,

1

 

 

 

 

желтый.

 

АТТ400С1

1

320*200

1

Светло-бирюзовый, светло-

1

 

 

 

 

малиновый, белый

 

АТТ400С2

2

320*200

2

Бирюзовый, ,малиновый, светло-

1

 

 

 

 

серый.

 

ATT400Med

4

640*200

 

 

 

ATT400Hi

5

640*400

 

 

 

CGAC0

0

320*200

0

Светло-серый, светло-красный,

1

 

 

 

 

желтый

 

CGAC1

1

320*200

1

Светло-бирюзовый, светло-

1

 

 

 

 

малиновый, белый.

 

CGAC2

2

320*200

2

Зеленый, красный, коричневый.

1

CGAC3

3

320*200

3

Бирюзовый, малиновый, светло-

1

 

 

 

 

серый.

 

CGAHi

4

640*200

 

 

 

EGALo

0

640*200

 

16 цветов

4

EGAHi

1

640*350

 

16 цветов

2

EGA64LO

0

640*200

 

16 цветов

1

EGA64Hi

1

640*350

 

4 цвета

1

EGAMonoHi

3

640*350

 

64К на плату,

1

 

 

256К на плату.

2

HercMonoHi

0

720*348

 

 

 

IBM8514Lo

0

640*480

 

256 цветов

 

1ВМ8514Ш

1

1024*76

 

256 цветов

 

MCGAC0

0

320*200

0

Светло-серый, светло-красный,

1

желтый.

MCGAC1

1

320*200

1

Светло-бирюзовый, светло-

1

малиновый, белый.

MCGAC2

2

320*200

2

Зеленый, красный, коричневый.

1

MCGAC3

3

320*200

3

Бирюзовый, малиновый, светло-

1

серый.

MCGAMed

4

640*200

 

 

 

MCGAHi

5

640*480

 

 

 

PC3270Hi

0

720*350

 

 

 

VGALo

0

640*200

 

16 цветов

4

VGAMed

1

640*350

 

16 цветов

2

VGAHi

2

640*480

 

16 цветов

1

8

Например: DriverVar := VGA; ModeVar := VGALo;

Первый параметр может задаваться как по имени, так и цифрой. Следующие инструкции эквивалентны: DriverVar := VGA; DriverVar := 9;

Чтобы инициализировать графический режим с автоматическим распознаванием драйвера и режима, достаточно присвоить параметру DriverVar:= Detect и InitGraph автоматически инициирует нужный драйвер и установит наиболее подходящий для дисплея режим.

Третий параметр '<путь к файлу драйвера>'; задает маршрут к модулю GRAPH и представляет собой синтаксически корректный, согласно правилам MS-DOS, путь к каталогу, в котором находятся файлы графических драйверов(*.BGI), если он расположен в активной директории, то вместо маршрута ставятся два апострофа, например:

DriverVar := Detect; InitGraph(DriverVar, ModeVar, ' ');

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

2.3.2 Закрытие видеорежима

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

2.3.3 Переключение текст — графика — текст

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

uses

Crt, Graph; var

DriverVar, ModeVar: integer; begin

ClrScr;

Writeln('Текстовый режим');

DriverVar:= Detect; InitGraph(DriverVar,ModeVar, , ' '); OutTextXY(300,250,'Графический режим')

RestoreCRTMode; Writeln('Текстовый режим');

9

SetGraphMode(ModeVar); OutTextXY(300,250,'Графический режим ')

CloseGraph end.

2.3.4 Обработка ошибок

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

GraphResult:integer – возвращает значение 0, если последняя графическая операция выполнилась без ошибок, или число в диапазоне -15...-1, если ошибка была. Все возможные ошибки и их коды приведены в табл.3 В качестве примера рассмотрим следующий фрагмент:

uses Graph; var

ErrorNumber: integer; begin

ErrorNumber:= GraphResult;

В переменной ErrorNumber содержится код ошибки. Можно пользоваться как кодом ошибки, так и соответствующей ему константой, например:

if ErrorNumber <> grOK then Writeln('Обнаружена ошибка:');

GraphErrorMsg(ErrorCode:integer):string - возвращает строку сообщения об ошибке, соответствующую коду ошибки. Например, процедура

Writeln(GraphErrorMsg(ErrorNumber)); выведет строку "No error", так как в на-

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

 

 

Таблица 3

 

 

Коды ошибок

Константа

 

Значение Описание

GrOK

0

Нет ошибок

grNoInitGraph

-1

Графика не инициализирована (используйте InitGraph)

grNotDetected

-2

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

grFileNotFound

-3

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

grInvalidDriver

-4

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

grNoLoadMem

-5

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

grNoScanMem

-6

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

grNoFloodMem

-7

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

GrFontNotFound

-8

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

grNoFontMem

-9

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

grInvalidMode

-10

Неверный графический режим для этого драйвера

GrError

-11

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

grIOerror

-12

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

grInvalidFont

-13

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

grInvalidFontNum

-14

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

Соседние файлы в папке Методичка - Borland Pascal 7.0