- •1.1. Типы драйверов
- •1.2. Инициализация графики
- •1.2.2. Инициализация и завершение видеорежима
- •1.2.3. Процедуры работы с видеорежимами
- •2. Построение изображений на экране
- •2.1. Система координат
- •2.2. Управление текущим указателем
- •3. Основные процедуры и функции, используемые в графическом режиме
Модуль Graph
Для создания графических изображений в языке Турбо Паскаль предназначен стандартный библиотечный модуль Graph. Он представляет собой библиотеку подпрограмм, которая полностью обеспечивает управление графическими режимами различных адаптеров дисплеев: CGA, EGA, VGA, MCGA, Hercules, PC 3270, AT&T 6300 и IBM 8514. Библиотека содержит около 80 графических процедур и функций, а также десятки стандартных констант и описаний типов данных.
Подключение модуля Graph к. программе осуществляется стандартным способом, т.е. с помощью зарезервированного слова USES:
USES Graph;
Чтобы запустить программу, в которой используются процедуры модуля Graph, необходимо поместить в рабочий каталог соответствующие графические драйверы (файлы с расширением .BGI).
Сам модуль Graph представляет собой отдельный файл GRAPH .TPU, который не входит в состав библиотеки TURBO.TPL, и чтобы обеспечить возможность работы с графикой, нужно сделать файл GRAPH.TPU доступным для компилятора.
1.1. Типы драйверов
В представленной ниже таблице приведены типы графических адаптеров и названия совместимых с ними драйверов.
Таблица 1.1
Драйвер |
Аппаратное обеспечение |
CGA.BGI |
Адаптеры CGA, MCGA |
EGAVGA.BGI |
Адаптеры EGA, VGA |
HERC.BGI |
Монохромный адаптер Hercules |
ATT.BGI |
AT&T 6300 (400 строк) |
PC3270.BGI |
IBM 3270 PC |
IBM8514.BGI |
IBM 8514 |
Драйверы представляют собой файлы с расширением .BGI, которые обеспечивают взаимодействие программ с графическими устройствами (согласно стандартам фирмы Borland, расширение .BGI должны иметь файлы графического интерфейса (Borland Graphic Interface)). При инициализации определенного графического режима подключается соответствующий драйвер. Для обеспечения работы программы в графическом режиме процедура InitGraph определяет тип адаптера и загружает соответствующий BGI-файл. Процедура CloseGraph служит для удаления графического драйвера из памяти и восстановления текстового режима работы видеоадаптера.
1.2. Инициализация графики
1.2.1. Классификация типов драйверов и видеорежимов
Перед началом работы с графикой необходимо установить наиболее подходящий для данного монитора видеорежим. В комплект поставки Турбо Паскаля входит ограниченное число драйверов, каждый из которых может поддерживать один или несколько видеорежимов. Тип драйвера и режим могут быть заданы в виде числа или символьной константы.
Ниже приведен перечень констант для задания типа графического адаптера. Эти константы определены в модуле Graph.
Таблица 1.2
Detect |
= 0 |
автоопределение |
CGA |
= 1 |
адаптер CGA |
MCGA |
= 2 |
адаптер MCGA |
EGA |
= 3 |
адаптер EGA 256K |
EGA64 |
= 4 |
адаптер EGA 64K |
EGAMono |
= 5 |
EGA с монохромным дисплеем |
IBM8514 |
= 6 |
адаптер 8514 |
HercMono |
= 7 |
адаптер Hercules |
ATT400 |
= 8 |
для ПК AT&T |
VGA |
= 9 |
адаптер VGA |
PC3270 |
= 10 |
адаптер 3270 |
CurrentDriver |
= 128 |
для GetModeRange |
Следующая таблица содержит перечни возможных графических режимов для различных типов видеоадаптеров. Во втором столбце указаны имена зарезервированных констант, которые можно передавать в процедуры, управляющие графическими режимами. В последнем столбце представлено значение количества полноэкранных изображений, которые могут одновременно загружаться в память видеоадаптера.
Таблица 1.3
Драйвер |
Имя константы режима и ее значение |
Разрешение экрана (в точках) |
Палитра |
Число видеостраниц |
CGA |
CGACO = 0 |
320×200 |
4 цвета |
1 |
|
CGAC1= 1 |
320×200 |
4 цвета |
1 |
|
CGAC2 = 2 |
320×200 |
4 цвета |
1 |
|
CGAC3 = 3 |
320×200 |
4 цвета |
1 |
|
CGAHi = 4 |
640×200 |
2 цвета |
1 |
MCGA |
MCGACO = 0 |
320×200 |
4 цвета |
1 |
|
MCGAC1= 1 |
320×200 |
4 цвета |
1 |
|
MCGAC2 = 2 |
320×200 |
4 цвета |
1 |
|
MCGAC3 = 3 |
320×200 |
4 цвета |
1 |
|
MCGAMed = 4 |
640×200 |
2 цвета |
1 |
|
MCGAHi = 5 |
640×480 |
2 цвета |
1 |
EGA |
EGALo=0 |
640×200 |
16 цветов |
4 |
|
EGAHi = 1 |
640×350 |
16 цветов |
2 |
EGA64 |
EGA64Lo = 0 |
640×200 |
16 цветов |
1 |
|
EGA64Hi = 1 |
640×350 |
4 цвета |
1 |
EGAMono |
EGAMonoHi = 3 |
640×350 |
2 цвета |
1(2) |
HERC |
HercMonoHi = 0 |
720×348 |
2 цвета |
2 |
ATT400 |
АТТ400С0 = 0 |
320×200 |
4 цвета |
1 |
|
АТТ400С1 = 1 |
320×200 |
4 цвета |
1 |
|
АТТ400С2 = 2 |
320×200 |
4 цвета |
1 |
|
АТТ400СЗ = 3 |
320×200 |
4 цвета |
1 |
|
ATT400Med = 4 |
640×200 |
2 цвета |
1 |
|
ATT400Hi = 5 |
640×400 |
2 цвета |
1 |
VGA |
VGALo=0 |
640×200 |
16 цветов |
4 |
|
VGAMed = 1 |
640×350 |
16 цветов |
2 |
|
VGAHi = 2 |
640×480 |
16 цветов |
1 |
PC3270 |
PC3270Hi = 0 |
720×350 |
2 цвета |
1 |
IBM8514 |
IBM8514Lo = 0 |
640×480 |
256 цветов |
1 |
|
IBM8514 =1 |
1024×768 |
256 цветов |
1 |