Графика в PascalABC
Курсовая работа, 24 Октября 2014, автор: пользователь скрыл имя
Краткое описание
В данной курсовой работе рассматривается тема «Графика в PascalАВС». Тема курсовой работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данная курсовая работа показывает, что можно создавать простые рисунки не только в графических программах, таких как Paint, AdobePhotoshop, CorelDraw, но и в среде языка программирования PascalАВС.
Содержание
ВВЕДЕНИЕ 3
ГЛАВА I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
1.1 Краткая история становления языка программирования Pascal. 4
1.2 Основные понятия графики 6
1.3 Основные функции и процедуры работы с графикой в PascalABC 7
ГЛАВА II. СОЗДАНИЕ ГРАФИЧЕСКОГО ПРОЕКТА 13
2.1 Понятие "фрактал" 13
2.2 Реализация треугольника 15
2.3 Построенияфрактала "Дерево" 19
ЗАКЛЮЧЕНИЕ 21
СПИСОК ЛИТЕРАТУРЫ 22
Вложенные файлы: 1 файл
курсовая.docx
— 488.19 Кб (Скачать файл)МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «ВИТЕБСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ П.М. МАШЕРОВА»
Факультет математический _
Кафедра информатики и информационных технологий_
КУРСОВАЯ РАБОТА
по дисциплине Технология программирования и методы алгоритмизации
Графика в PascalABC
Кралько Виктория Анатольевна,
(фамилия, имя, отчество студента (слушателя)
3 курс, 33 группа
(курс, группа)
Руководитель:
Кузьмичёв Денис Романович,
(фамилия, имя, отчество)
Преподаватель кафедры
информатики и ИТ
(должность, ученая степень, звание)
Витебск, 2013
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
В данной курсовой работе рассматривается тема «Графика в PascalАВС». Тема курсовой работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данная курсовая работа показывает, что можно создавать простые рисунки не только в графических программах, таких как Paint, Adobe Photoshop, Corel Draw, но и в среде языка программирования PascalАВС.
Целью курсовой работы является разработка графического проекта в среде программирования PascalАВС. Графические возможности PascalАВС будут реализованы на примере изображения фрактального дерева.
Задачи:
1)Познакомиться с историей
становления языка программирования PascalАВС.
2)Изучить основные понятия графики, функции и процедуры работы с графикой PascalАВС.
3) Освоить навыки создания графических изображений в среде программирования PascalАВС
4)Создать графическое
изображение в среде
с использованием фракталов.
Курсовая работа состоит из двух основных разделов:
- Аналитическая часть;
- Создание графического проекта.
В первом разделе описывается история языка PascalАВС, основные понятия графики, работа с графикой в PascalАВС, основные команды построения изображения, графические модули, дается основная структура программы. Во втором разделе описываются этапы создания фрактального дерева, дается краткое изложение основных элементов рисунка.
Текст созданной программы
ГЛАВА I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Краткая история
становления языка программирования Pascal.
Pascal ABC разработан в 2002 году сотрудниками факультета математики, механики и компьютерных наук Южного федерального университета (Ростов-на-Дону, Россия) во главе с С.С. Михалковичем. Целью авторов было создание обучающей среды программирования, более современной, чем Borland Pascal и Turbo Pascal, более простой для изучения, чем Borland Delphi, но в то же время близкой к стандартным компиляторам языка.
Система Pascal ABC основана на языке Delphi Pascal и призвана осуществить постепенный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Некоторые языковые конструкции в Pascal ABC допускают, наряду с основным, упрощенное использование, что позволяет использовать их на ранних этапах обучения. Например, в модулях может отсутствовать разделение на секцию интерфейса и секцию реализации. В этом случае модули устроены практически так же, как и основная программа, что позволяет приступить к их изучению параллельно с темой "Процедуры и функции". Тела методов можно определять непосредственно внутри классов (в стиле Java и C#), что позволяет создавать классы практически сразу после изучения записей, процедур и функций.
Ряд модулей системы программирования Pascal ABC специально создавался для учебных целей:
- Модуль растровой графики GraphABC обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi. Он доступен в несобытийных программах и позволяет легко создавать анимацию без мерцания.
- Модуль Events позволяет создавать простейшие событийные программы без использования объектов (события представляют собой обычные процедурные переменные).
- Модули Timers и Sounds позволяют создавать таймеры и звуки, которые также реализованы в процедурном стиле. Эти модули можно использовать даже в консольных программах.
- Модуль контейнерных классов Containers позволяет работать с основными структурами данных (динамические массивы, стеки, очереди, множества), реализованными в виде классов.
- Модуль векторной графики ABCObjects предназначен для быстрого изучения основ объектно-ориентированного программирования, а также позволяет создавать достаточно сложные игровые и обучающие программы.
- Модуль визуальных компонентов VCL позволяет создавать событийные приложения с главной формой в стиле Delphi. Классы VCL немного упрощены по сравнению с аналогичными классами Delphi. Имеется редактор форм и инспектор объектов. Технология восстановления формы по коду программы позволяет обойтись для приложения с главной формой одним файлом (!).
В языке Pascal ABC имеются арифметические операции с типизированными указателями (в стиле языка C), а также тип complex, предназначенный для работы с комплексными числами.
Компилятор Pascal ABC является компилятором переднего плана (front-end). Это означает, что он не генерирует исполняемый код в виде .exe-файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора. В итоге скорость работы программы примерно в 20 раз медленнее скорости работы этой же программы, откомпилированной в среде Borland Pascal, и в 50 раз медленнее этой программы, откомпилированной в среде Borland Delphi.
В системе Pascal ABC ученик может выполнять так называемые проверяемые задания, обеспечивающие постановку задачи со случайными исходными данными, контроль операций ввода-вывода, проверку правильности решения, а также ведение протокола решения задач.
1.2 Основные понятия графики
Экраны цветных мониторов состоят
из прямоугольной решётки точек(пикселей),светящихся
разным цветом. Каждый цветной пиксель
образован тремя более мелкими по площади
участками красного, зелёного и синего
цветов. При свечении этих участков с разной
интенсивностью цвета смешиваются, создавая
элементы изображения различных оттенков
и яркости.
Важной характеристикой растра является
его расширение. Расширение
экрана-это количество точек(пикселей)
на единицу длины. Чем это число выше, тем
более мелкими являются сами пиксели,
и, соответственно, более плотно они располагаются
на плоскости, что и приводит к тому, что
мы воспринимаем их как единое, цельное
изображение. Из года в год разрешающая
способность принтеров, мониторов, сканеров
и .т.п. растёт.
Для использования графических возможностей
языка Паскаль необходимо в блоке описания
uses подключить графический модуль Graph
.Модуль содержит набор графических функций
и процедур, основные из них которые рассмотрены
ниже.
Положение каждой точки изображения задано
координатами Х и У. Координаты- целые
числа, они задают номера колонки и строки
и не зависят от физического размера экрана.
Оси координат направлены следующим образом:
горизонтальная ось Х направлена слева
направо; вертикальная ось У направлена
сверху вниз; верхний левый угол имеет
координаты(0, 0).
Рисунок 1.1
Очевидно, что запись изображения
требует хранения информации о положении
множества точек, для каждой из которых
должен быть задан цвет. Цветное изображение
получается смешиванием трех основных
цветов – красного, зеленого и синего.
Такая модель представления цвета называется
моделью RGB ( Red - Green - Blue ). Управляя интенсивностью
компонентов, можно получить различные
оттенки и степени интенсивности цвета.
В частности, для получения градаций серого
надо взять интенсивности трех основных
цветов равными друг другу.Стандартный
модуль GraphABC системы PascalABC
содержит типы, константы, переменные,
процедуры и функции, позволяющие создавать
изображения в специальнографическом
окне.
1.3 Основные функции
и процедуры работы с графикой в PascalABC
Для рисования в Pascal ABC необходимо
запустить специальный модуль GraphABC, использование
специальных функций и процедур помогут
нарисовать точку, отрезок, окружность,
прямоугольник и другие фигуры:
SetPixel(x,y,color) - Закрашивает один пиксел с
координатами (x,y) цветом color
LineTo(x,y) - рисует отрезок от текущего положения
пера до точки (x,y); координаты пера при
этом также становятся равными (x,y).
Line(x1,y1,x2,y2) - рисует отрезок с началом в
точке (x1,y1) и концом в точке (x2,y2).
SetPenColor(color) - устанавливает цвет пера, задаваемый
параметром color.
SetPenWidth(n) - устанавливает ширину (толщину)
пера, равную n пикселям.
Rectangle(x1,y1,x2,y2) - рисует прямоугольник, заданный
координатами противоположных вершин
(x1,y1) и (x2,y2).
FloodFill(x,y,color) - заливает область одного цвета
цветом color, начиная с точки (x,y).
SetBrushColor(color) - устанавливает цвет кисти.
Заливка кистью распространяется на замкнутый
контур, описание которого следует за
процедурой установки цвета кисти.
Ellipse(x1,y1,x2,y2) - рисует эллипс, заданный своим
описанным прямоугольником с координатами
противоположных вершин (x1,y1) и (x2,y2).
Circle(x,y,r) - рисует окружность с центром в
точке (x,y) и радиусом r.
Arc(x,y,r,a1,a2) - Рисует дугу окружности с центром
в точке (x,y) и радиусом r, заключенной между
двумя лучами, образующими углы a1 и a2 с
осью OX (a1 и a2 – вещественные, задаются
в градусах и отсчитываются против часовой
стрелки).
Цвета в PascalABC:
clBlack черный
clPurple фиолетовый
clWhite белый
clMaroon темно-красный
clRed красный
clNavy темно-синий
clGreen зеленый
clBrown коричневый
clBlue синий
clSkyBlue голубой
clYellow желтый
clCream кремовый
clAqua бирюзовый
clOlive оливковый
clFuchsia сиреневый
clTeal сине-зеленый
clGray темно-серый
clLime ярко-зеленый
clMoneyGreen цвет зеленых денег
clLtGray светло-серый
clDkGray темно-серый
clMedGray серый
clSilver серебряный
Функции для работы с цветом:
Тип цвета Color является синонимом System.Drawing.Color.
function RGB(r,g,b: byte): Color; Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие (r,g и b - в диапазоне от 0 до 255)
function ARGB(a,r,g,b: byte): Color; Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие и прозрачность (a) (a,r,g,b - в диапазоне от 0 до 255)
function RedColor(r: byte): Color; Возвращает красный цвет с интенсивностью r (r - в диапазоне от 0 до 255)
function GreenColor(g: byte): Color; Возвращает зеленый цвет с интенсивностью g (g - в диапазоне от 0 до 255)
function BlueColor(b: byte): Color; Возвращает синий цвет с интенсивностью b (b - в диапазоне от 0 до 255)
function clRandom: Color; Возвращает случайный цвет
function GetRed(c: Color): integer;Возвращает красную составляющую цвета
function GetGreen(c: Color): integer; Возвращает зеленую составляющую цвета
function GetBlue(c: Color): integer; Возвращает синюю составляющую цвета.
Свойства:
property Width: integer;Ширина рисунка.
property Height: integer; Высота рисунка.
property Transparent: boolean; Прозрачность
рисунка. Если Transparent=
property NeedDestroy: boolean; Определяет, должен ли рисунок разрушаться при вызове деструктора и метода Load. NeedDestroy обычно устанавливается в False, если несколько объектов классаPicture разделяют один рисунок.
Методы:
procedure Load(fname: string);
Загружает рисунок из файла с именем fname. Если NeedDestroy установлено в True, то рисунок, находившийся ранее в объекте Picture, разрушается. Рисунок с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Images\ каталога программы PascalABC.exe.
procedure Save(fname: string);
Сохраняет рисунок в файле с именем fname. Формат рисунка устанавливается расширением имени файла. Допустимые расширения: .bmp, .gif, .jpg, .png.
function Handle: integer;
Возвращает описатель рисунка.
procedure Draw(x,y: integer);
Выводит рисунок в позицию (x,y) графического окна.
procedure Draw(x,y,w,h: integer);
Выводит рисунок в позицию (x,y) графического окна, масштабируя его к размеру (w,h). Если w<0 или h<0, то выводится зеркальное отражение рисунка относительно вертикалоной или горизонтальной оси соответственно.
procedure Draw(x,y: integer; r: Rect);
Выводит часть рисунка, заключенную в прямоугольнике r, в позицию (x,y) графического окна.
procedure Draw(x,y,w,h: integer; src: Rect);
Выводит часть рисунка, заключенную в прямоугольнике r, в позицию (x,y) графического окна, масштабируя ее к размеру (w,h).
procedure CopyRect(dest: Rect; p: Picture; src: Rect);
Копирует в прямоугольник dest текущего рисунка часть рисунка p, заключенную в прямоугольнике src.
procedure FlipHorizontal;
Зеркально отображает картинку относительно горизонтальной оси симметрии.
procedure FlipVertical;
Рисование графических объектов
Рисование графических объектов осуществляется пером и кистью. Линии,
ограничивающие объекты, рисуются пером.