Реферат: Графика Турбо-Паскаля. Динамические изображения
yg =ry -|sy * y |-dy ,
где |x | - целая часть х ; sx и sy – масштабные множители, выбираемые из условия
rx =|sx * xmax |+1,
ry =|sy * ymax |+1.
Здесь xmax и ymax – максимальные значения геометрических координат. Пересчет координаты y по такой же формуле, что и для х , привел бы к зеркально отраженному относительно горизонтальной линии изображению. Слагаемые dx и dy обеспечивают смещение изображения относительно левого верхнего угла экрана. Изображение будет смещено в центр экрана при
dx =|rx /2|,
dy =|ry /2|.
Чтобы изображение не зависело от разрешения, в Турбо Паскале используются функции GetMaxX и GetMaxY, возвращающие наибольший и номер пикселя по горизонтали и по вертикали соответственно. Графические координаты правого нижнего угла экрана равны ( GetMaxX, GetMaxY).
1.2.1 Переключение между текстовым и графическим режимами
Работа дисплея невозможна без специальных микросхем, управляющих его работой. Видеоадаптер должен поддерживать работу дисплея в графическом режиме. Турбо Паскаль обеспечивает работу со следующими видеоадаптерами: CGA, MCGA,EGA, VGA, Hercules, AT&T 400, 3270 PC, IBM-8514.
Работой видеоадаптера управляет специальная программа, которая называется драйвером . Драйвер хранится в отдельном файле на диске и содержит как исполняемый код, так и необходимые ему для работы данные. Признак файла с драйвером – расширение . bgi имени файла. Имя файла с драйвером соответствует типу видеоадаптера вашего компьютера.
Переключение в графический режим и работа в нем реализованы в Турбо Паскале в виде набора процедур, находящихся в специальном модуле graph. tpu . Работа этого модуля основана на использовании так называемого графического интерфейса Борланд (BGI – Borland Graphics Interface ), специализированной графической библиотеки. Основное достоинство этого интерфейса заключается в том, что он прост в изучении и вполне подходит для программирования несложных графических программ.
Модуль Graph Турбо Паскаля содержит около пятидесяти различных процедур и функций, предназначенных для работы с графическим экраном. В этом же модуле описаны некоторые встроенные константы и переменные, которые могут быть использованы в графических программах. Основную часть модуля составляют процедуры вывода базовых графических элементов, таких как точки, отрезки прямых линий, дуги и целые окружности и т.д. Такие элементы называются графическими примитивами . Другая группа процедур предназначена для управления графическим режимом.
Модуль Graph должен явно подключаться к программе с помощью оператора использования Uses, записываемого после заголовка программы :
Program Grafics ;
Uses Graph ;
Программа при переключении в графический режим должна определить тип видеоадаптера. Это можно сделать, явно указав в программе тип видеоадаптера или дав программе возможность самостоятельно определить значение соответствующих параметров. Для этого необходимо ввести переменную целого типа, ее идентификатор можно обозначить d. При явном определении видеоадаптера в программе должен присутствовать оператор присваивания: d:= value;
где value – это любое некоторое число (таблица 1), либо встроенная константа (встроенные константы не надо описывать специально, так как их описания содержатся в модулях).
Некоторые возможные значения value приведены в таблице1.
Таблица1 – Тип видеоадаптера
Константа | Значение |
CGA MCGA EGA EGA64 EGAMono HercMono AT&T400 VGA PC3270 | 1 2 3 4 5 7 8 9 10 |
При автоматическом распознавании видеоадаптера в правой части оператора присваивания используется константа Detect (или нулевое значение).
d:= Detect; d:=0.
Второе, что должна сделать программа – задать определенный графический режим. Большинство видеоадаптеров могут работать в нескольких графических режимах. Эти режимы различаются прежде всего разрешением и набором доступных цветов. Для этого следует ввести еще одну переменную целого типа, назовем ее t или GraphMode . Некоторые допустимые значения приведены в таблице:
Таблица 2 – Графические режимы
Константа | Значение | Описание графического режима |
EGALo | 0 | 640x200, 16 цветов, 4страницы |
EGAHi | 1 | 640x350,16 цветов, 2 страницы |
EGA64Lo | 0 | 640x200, 16 цветов, 1 страница |
EGA64Hi | 1 | 640x350, 4 цвета, 1 страница |
VGALo | 0 | 640x200, 16 цветов, 4 страницы |
VGAMed | 1 | 640x350, 16 цветов, 2 страницы |
VGAHi | 2 | 640х480, 16 цветов, 1 страница |
VGAHi2 | 3 | 640х480, 2 цвета, 1 страница |
В столбце "описание графического режима" приведены разрешение, количество цветов и количество страниц видеопамяти. Последний параметр связан с тем, что графическое изображение формируется в специальной видеопамяти. Можно считать, что видеопамять состоит из набора областей – страниц. Изображение формируется на отдельной странице. Страничную организацию видеопамяти можно использовать для программирования динамических изображений.
Переключение в графический режим работы дисплея выполняется вызовом процедуры InitGraph из модуля Graph .
Описание:
InitGraph( var d, t, ‘’);
Первый параметр в этой процедуре задает тип видеоадаптера, второй определяет режим. И параметр d , и параметр t являются параметрами-переменными (var ). Параметр ‘’ определяет путь доступа к каталогу (маршрут), в котором находятся графические драйверы. Если этот параметр пуст, то подразумевается, что файлы драйверов содержатся в текущем каталоге.