Автор работы: Пользователь скрыл имя, 27 Февраля 2010 в 18:28, Не определен
Языки и системы программирования
Чтобы изображение не зависело от разрешения, в Турбо Паскале используются функции GetMaxX и GetMaxY, возвращающие наибольший и номер пикселя по горизонтали и по вертикали соответственно. Графические координаты правого нижнего угла экрана равны (GetMaxX, GetMaxY).
Работа дисплея невозможна без специальных микросхем, управляющих его работой. Видеоадаптер должен поддерживать работу дисплея в графическом режиме. Турбо Паскаль обеспечивает работу со следующими видеоадаптерами: 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). Параметр '' определяет путь доступа к каталогу (маршрут), в котором находятся графические драйверы. Если этот параметр пуст, то подразумевается, что файлы драйверов содержатся в текущем каталоге.
Процедура InitGraph инициализирует графическую систему и переводит аппаратуру в графический режим.
Переключение в графический режим (инициализация графического режима) обычно сопровождается обработкой возможных ошибок инициализации. Эти ошибки могут быть связаны с отсутствием графического драйвера или неправильными значениями параметров. При наличии ошибки процедура InitGraph вырабатывает соответствующий, отличный от нуля, результат - код ошибки. Этот код можно получить с помощью функции GraphResult.
Описание:
GraphResult Тип результата: Целый (Integer).
Определены следующие коды ошибок:
- 1 графика не установлена (используйте процедуру InitGraph);
- 2 графическая аппаратура не найдена;
- 3 драйвер графического устройства не найден;
- 4 неверный файл драйвера графического устройства;
- 5 не хватает памяти для загрузки драйвера;
- 6 выход за границы при просмотре области закраски;
- 7 выход за границы памяти при закрашивании;
- 8 файл шрифта не найден;
- 9 не хватает памяти для загрузки шрифта;
- 10 недопустимый графический режим для выбранного драйвера.
Завершение работы в графическом режиме производится с помощью процедуры CloseGraph, которая выгружает драйвер из памяти и восстанавливает предыдущий видеорежим.
При работе с цветными изображениями большое значение имеет набор цветов, доступных программисту. Количество доступных для воспроизведения цветов определяется возможностями аппаратуры, то есть дисплея и видеоадаптера, а также видеорежимом. В программировании обычно используется схема цветового представления, в которой считается, что каждый цвет является смесью трех основных цветов: красного Red), зеленого (Green) и синего (Blue), а оттенок определяется интенсивностью компонентов. Эта схема называется RGB-представлением. Использование RGB-представления связано с конструктивными особенностями электронно-лучевой трубки, в которой каждая графическая точка состоит из трех компонентов: красного, зеленого, синего. При инициализации видеорежима компьютер создает цветовую палитру, которую можно считать таблицей, где каждому цвету сопоставлен свой номер.
При работе с цветом в режиме VGA интенсивность основного цвета задается значением типа Word. Шестнадцатицветная палитра VGA приведена в таблице (в процедурах можно использовать как константы цветов, так и их коды):
Таблица 3 - Коды цветов
Цвет | Константа | Код |
Черный
Синий Зеленый Бирюзовый Красный Малиновый Коричневый Светло-серый Темно-серый Светло-синий Светло-зеленый Светло-бирюзовый Светло-красный Светло-малиновый Желтый Белый |
Black
Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White |
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Процедура SetColor.
Используя палитру устанавливает текущий цвет линий.
Описание: SetColor (цвет: Word)
Цвета линий могут принимать значения в диапазоне от 0 до 15 в зависимости от используемого графического драйвера и графического режима.
Процедура SetBkColor.
Используя палитру устанавливает текущий фоновый цвет.
Описание: SetBkColor (цвет: Word)
Цвет фона может принимать
значение в диапазоне от 0 до 15 (смотрите
таблицу цветов).
Процедура SetFillStyle.
Данная процедура устанавливает тип (стиль) закраски и ее цвет.
Описание:SetFillStyle(
В Турбо Паскале имеется 12 стилей заполнения:
- EmptyFill (0) - сплошное заполнение цветом фона;
- SolidFill (1) - сплошное заполнение заданным цветом;
- LineFill (2) - заполнение горизонтальными линиями;
- LtSlashFill (3) - диагональное заполнение;
- SlashFill (4) - диагональное заполнение толстыми линиями;
- BkSlashFill (5) - обратное диагональное заполнение толстыми линиями;
- LtBkSlashFill (6) - обратное диагональное заполнение;
- HatchFill (7) - клетчатое заполнение;
- XHatchFill (8) - косое клетчатое заполнение;
- InterLeaveFill (9) - чередующееся линейное заполнение;
- WideDotFill (10) - редко расположенные точки;
- CloseDotFill (11) - часто расположенные точки;
- UserFill (12) - стиль определен пользователем.
Примечание:
в скобках указаны коды стилей. В процедурах
рисования можно использовать как константы
стилей, так и их коды. По умолчанию устанавливается
сплошная закраска белого цвета.
Процедура SetLineStyle.
Информация о работе Графика Турбо-Паскаля. Динамические изображения