MaxEdu.ru
» » » Графика Турбо-Паскаля. Динамические изображения
Вернуться назад

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

Содержание
Введение. 4
Раздел 1. Теоретическая часть. 5
1.1 Текстовый и графический режимы.. 5
1.2 Графические координаты.. 6
1.2.1 Переключение между текстовым и графическим режимами. 7
1.3 Процедуры и функции. 10
1.3.1 Установка цвета линии, типа линии и закраски. 10
1.3.2 Точки на экране. 12
1.3.3 Линии и прямоугольники. 12
1.3.4 Окружности, эллипсы, дуги.13
1.3.5 Сектор. 14
1.3.6 Многоугольники. 14
1.3.7 Вывод изображений в относительных координатах.15
1.3.8 Работа с текстами в графическом режиме.16
1.4 Графические окна. 18
1.5 Программирование движущихся объектов. 19
Раздел 2. Практическая часть. 20
2.1 Разработка программы, реализующей движение по траектории графического объекта.20
2.2 Разработка программы, реализующей перемещение по экрану окружности21
Заключение. 24
Список использованных источников. 25
Введение
Язык Turbo Pascal предоставляет целый ряд процедур и других средств, позволяющих рисовать на экране разноцветные точки, отрезки прямых, дуги, закрашенные и не закрашенные окружности, прямоугольники, а также выполнять ряд других действий.
Все средства для работы с графикой находятся в модуле GRAPH, поэтому он должен быть подключен в программе перед тем, как начать работу:
USES Graph;
Инициализация графики производится с помощью процедуры InitGraph:
InitGraph(var d, t, ‘’)
Переменная d определяет тип видеоадаптера, t– тип графического режима. Если переменной d присвоить значение Detect, то Паскаль сам определит установленный видеоадаптер и установит самый мощный из имеющихся графический режим. Для проверки успешности инициализации графики можно использовать процедуру GraphResult. Если графика была успешно инициализирована, то процедура GraphResult вернет значение grOk.
В курсовой работе приведены наиболее интересные и часто используемые процедуры для рисования, а также показаны способы программирования движущихся объектов.

Раздел 1. Теоретическая часть
1.1 Текстовый и графический режимы
Известно, что основным устройством для вывода информации, в том числе и результатов работы программы, является монитор компьютера. Монитор внешне очень похож на телевизор, но у него имеется важная особенность. Эта особенность заключается в том, что у телевизора один-единственный (с точки зрения вывода изображения) режим работы, а у компьютерного монитора их два. Это текстовый и графический режимы.
Рисунок 1 – Графический режим
Различие между текстовым и графическим режимами работы монитора заключается в возможностях управления выводом визуальной информации. В текстовом режиме минимальным объектом, отображаемым на экране, является символ , алфавитно-цифровой или какой-либо иной. В обычных условиях экран монитора, работающего в текстовом режиме (алфавитно-цифрового дисплея), может содержать не более 80 символов по горизонтали и 25 символов по вертикали, то есть всего 2000 визуальных объектов. При этом имеются ограниченные возможности по управлению цветом символов. Конечно, в таком режиме можно выводить на экран не только обычный текст, но и некие графические изображения (например, таблицы), однако понятно, что качество таких изображений будет вне всякой критики. Но для серьезной работы с изображениями текстовый режим дисплея абсолютно не подходит.
В графическом режиме минимальным объектом, выводом которого может управлять программист, является так называемый пиксель (от английского pixel, возникающего в результате объединения слов "рисунок" (picture) и "элемент" (element). Пиксель представляет собой не что иное, как точку с тремя цветами. Его геометрические размеры определяются разрешением монитора. Разрешение монитора обычно задается в виде rx * ry , где rx – количество пикселей на экране по горизонтали, а ry – количество пикселей по вертикали. На практике используются не произвольные, а некоторые определенные значения разрешения. Такими разрешениями являются, например, 320х200, 640х480, 800х600, 1024х768, 1280х1024 и т.д. Даже в случае самого грубого разрешения изображение в графическом режиме формируется с помощью 64000 графических элементов.
Можно рассуждать и геометрически. Размер экрана – величина фиксированная. Если величина диагонали экрана 14 дюймов, его геометрические размеры составляют примерно 28х20 см. Размер пикселя можно приблизительно получить, разделив размер экрана на разрешение. Геометрические размеры пикселя определяют степень детализации изображения, его качество. Имеется, правда, минимально допустимое значение размера пикселя, определяемое техническими параметрами монитора.
1.2 Графические координаты
Любое изображение формируется из достаточно простых геометрических фигур. Это точки, отрезки прямых, окружности и т.д. Из геометрии известно, что положение геометрического объекта и его форма задаются координатами его точек. Следовательно, для того, чтобы запрограммировать графический вывод, надо научиться задавать координаты графических объектов.
Графические координаты задают положение точки на экране дисплея. Поскольку минимальным элементом, к которому имеет доступ программист, является пиксель, естественно в качестве графических координат использовать порядковые номера пикселей. Допустимый диапазон изменения графических координат составляет [0,rx -1] для х -координаты и [0,ry -1] для y -координаты.
Точкой отсчета является верхний левый угол экрана. Значения х -координаты отсчитываются слева направо, а y -координаты – сверху вниз. Последнее отличает графические координаты от обычных декартовых координат, принятых в математике, и служит не иссякающим источником ошибок для начинающего программиста.
Проблема заключается в том, что при разработке программы график или другое изображение обычно проектируется в привычной декартовой системе координат. Но для правильного отображения такого графика на экране необходимо учесть различие между декартовой и графической системами координат. Таких различий три:
1. Графические координаты принимают только целочисленные значения.
2. Графические координаты принимают значения, ограниченные как снизу (нулевым значением), так и сверху (значением разрешения).
3. Графическая координата y отсчитывается сверху вниз.
Таким образом, декартовы координаты точки (x, y ) для отображения ее на экране следует пересчитать в графические (xg, yg ) по формулам
xg =|sx * x |+dx ;
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 ). Параметр ‘’ определяет путь доступа к каталогу (маршрут), в котором находятся графические драйверы. Если этот параметр пуст, то подразумевается, что файлы драйверов содержатся в текущем каталоге.
Процедура 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 .
Функция: Устанавливает текущую толщину и тип линии.
Описание: SetLineStyle (тип_строки, образец, толщина).
Примечания: Данная процедура влияет на все типы линий, вычерчиваемых процедурами Line , LineTo , Rectangle , DrawPoly , Arc , Circle и др.
Могут вычерчиваться непрерывные, пунктирные линии, линии, состоящие из точек или точек и тире.
Описаны следующие константы типа линии:
SolidLn =0 – непрерывная линия;
DottedLn =1 – линия из точек;
CenterLn =2 – линия из точек и тире;
DashedLn =3 – пунктирная линия;
UserDilLn =4 – тип, определяемый пользователем.
Описаны следующие константы для толщины линий:
NormWidth =1 – нормальная толщина;
ThickWidth =3 – жирная линия.
Процедура FloodFill
Функция: Заполняет ограниченную область, используя текущий заполнитель.
Описание: FloodFill ( x , y , граница).
Примечания: Эта процедура используется для заполнения замкнутой области (для растровых устройств). Точка ( x , y ) является внутренней точкой заполняемой области. Для заполнения области, ограниченной цветом, который определяет параметр "граница ", используется текущий образец закраски. Если точка ( x , y ) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть (поле экрана, не входящее в область).

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Рефераты по информатике Содержание Введение. 4 Раздел 1. Теоретическая часть. 5 1.1 Текстовый и графический режимы.. 5 1.2 Графические координаты.. 6 1.2.1 Переключение
Оценок: 310 (Средняя 5 из 5)

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.

© 2014 - 2022 MaxEdu.ru