Графика Турбо-Паскаля. Динамические изображения

Автор работы: Пользователь скрыл имя, 27 Февраля 2010 в 18:28, Не определен

Описание работы

Языки и системы программирования

Файлы: 1 файл

Курсовая_ЯСП.doc

— 770.74 Кб (Скачать файл)

       Чтобы изображение не зависело от разрешения, в Турбо Паскале используются функции 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). Параметр '' определяет путь доступа к каталогу (маршрут), в котором находятся графические драйверы. Если этот параметр пуст, то подразумевается, что файлы драйверов содержатся в текущем каталоге.

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

       Переключение в графический режим (инициализация графического режима) обычно сопровождается обработкой возможных ошибок инициализации. Эти ошибки могут быть связаны с отсутствием графического драйвера или неправильными значениями параметров. При наличии ошибки процедура InitGraph вырабатывает соответствующий, отличный от нуля, результат - код ошибки. Этот код можно получить с помощью функции GraphResult.

       Описание:

       GraphResult    Тип результата: Целый (Integer).

       Определены следующие коды ошибок:

       - 1 графика не установлена (используйте процедуру InitGraph);

       - 2 графическая аппаратура не найдена;

       - 3 драйвер графического устройства не найден;

       - 4 неверный файл драйвера графического устройства;

       - 5 не хватает памяти для загрузки драйвера;

       - 6 выход за границы при просмотре области закраски;

       - 7 выход за границы памяти при закрашивании;

       - 8 файл шрифта не найден;

       - 9 не хватает памяти для загрузки шрифта;

       - 10 недопустимый графический режим для выбранного драйвера.

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

          

       1.3 Процедуры и функции

       1.3.1 Установка цвета линии, типа линии и закраски

 

       При работе с цветными изображениями большое значение имеет набор цветов, доступных программисту. Количество доступных для воспроизведения цветов определяется возможностями аппаратуры, то есть дисплея и видеоадаптера, а также видеорежимом. В программировании обычно используется схема цветового представления, в которой считается, что каждый цвет является смесью трех основных цветов: красного 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(стиль: Word; цвет: Word;)

       В Турбо Паскале имеется 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.

Информация о работе Графика Турбо-Паскаля. Динамические изображения