Автор работы: Пользователь скрыл имя, 25 Мая 2013 в 09:24, контрольная работа
Разрабатываемое приложение предназначено для демонстрации построения простейших фракталов.
Данное приложение может быть востребовано преподавателями и студентами высших учебных заведений.
1.2 Технические характеристики
Данное приложения может работать не только под операционной системой Windows, но и под NIX системами с помощью эмулятора Windows-приложений Wine.
Разрабатываемое приложение предназначено для демонстрации построения простейших фракталов.
Данное приложение может быть востребовано преподавателями и студентами высших учебных заведений.
1.2 Технические характеристики
Данное приложения может работать не только под операционной системой Windows, но и под NIX системами с помощью эмулятора Windows-приложений Wine.
1.2.1 Постановка задачи
Целью курсовой работы заключается в разработке приложения под Windows, позволяющее демонстрировать построение фракталов Мандельброта и Жуля. Такая программа должна быть проста в использовании.
Разрабатываемое приложение должно содержать форму с кнопками выбора вида фрактала и областью, где будет отображаться результат. Выбор любого из видов фракталов должен приводить к построению заранее указанного фрактала и отображению его в рабочей области.
1.2.2 Описание алгоритма
После запуска приложения пользователь видит форму на которой расположены кнопки выбора какой фрактал будет построен, пустую область, занимающую большую часть формы (в ней будет отображаться результат выбора),строка редактирования где вводится имя файла для сохранения и кнопка «Сохранить». После того как пользователь выберет интересующий его фрактал, в рабочей области будет построен фрактал.
1.2.3 Выбор состава технических и программных средств
При разработке данного приложения была выбрана среда программирования Delphi 7. Ядром среды Delphi является язык программирования Object Pascal. Данная среда программирования была выбрана, т.к. она является объектно-ориентированной.
1.3 Разработка внешнего вида приложения
Интерфейс приложения должен быть наиболее
удобным и простым в
Рисунок 1. Внешний вид запущенного приложения
При запуске приложения не строится ни один фрактал, т.к. чтобы вывести нужный фрактал нужно нажать на кнопку в левом верхнем углу с его названием.
Рисунок 2. Выбор и вывод результата
Нажатие на другую кнопку приведет к тому, что в рабочей области отобразится другой фрактал:
Рисунок 3. Результат смены выбора
Если перемещать бегунки, которые находятся слева от рабочей области, и повторно нажать на кнопку с названием фрактала, результатом будет тот же самый фрактал, но уже в другой цветовой гамме:
Рисунок 4. Результат смены цветовой гаммы
Если возникнет необходимость сохранения фрактала в виде графического изображения, то в поле ввода, которое находится в левом нижнем углу, нужно ввести название файла и нажать кнопку «Сохранить». По умолчанию имя файла имеет значение «fractal». После нажатия кнопки, приложение сохраняет то, что отображено в рабочей области в формате jpg
2.1 Конструирование Windows-окна
Рисунок 5 Внешний вид приложения с подписанными компонентами
№ п/п |
Компонент |
Назначение |
1 |
Form1 |
|
2 |
Button1 |
Сохранение фрактала в файл |
3 |
Button2 |
Фрактал Мандельброта |
4 |
Button3 |
Фрактал Жуля |
5 |
Button4 |
Фрактал Жуля |
6 |
Button5 |
Выход из приложения |
7 |
SpeedButton1 |
Значения по умолчанию |
8 |
Edit1 |
Начальные значения |
9 |
Edit2 | |
10 |
Edit3 | |
11 |
Edit4 | |
12 |
Edit5 |
Поле ввода имени файла для сохранения фрактала |
13 |
Edit8 |
Значения для определения цветовой гаммы в системе RGB |
14 |
Edit9 | |
15 |
Edit10 | |
16 |
RadioButton1 |
Определение начальных координат для фрактала Мандельброта |
17 |
RadioButton2 |
Определение начальных координат для фрактала Жулиа |
18 |
RadioButton3 |
Определение начальных координат для второго фрактала Жулиа |
19 |
Image1 |
Поле построения фрактала |
Таблица 1. Назначение компонентов главной формы
Таблица 2. Изменённые свойства компонентов главной формы
№ п/п |
Компонент |
Свойства |
1 |
Form1 |
Left = 265 Top = 234 Width = 811 Height = 722 Caption = ‘Фрактал’ Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = True Position = poScreenCenter Scaled = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 |
2 |
Button1 |
Left = 144 Top = 8 Width = 75 Height = 25 Caption = 'Сохранить' TabOrder = 1 OnClick = Button1Click |
3 |
Button2 |
Left = 0 Top = 0 Width = 81 Height = 33 Caption = 'Мандельброт' TabOrder = 0 OnClick = Button2Click |
4 |
Button3 |
Left = 80 Top = 0 Width = 75 Height = 33 Caption = 'Жулиа' TabOrder = 1 OnClick = Button3Click |
5 |
Button4 |
Left = 154 Top = 0 Width = 73 Height = 33 Caption = 'Жулиа 2' TabOrder = 4 OnClick = Button4Click |
6 |
Button5 |
Left = 256 Top = 8 Width = 75 Height = 25 Caption = 'Выход' TabOrder = 2 OnClick = Button5Click |
7 |
SpeedButton1 |
Left = 48 Top = 256 Width = 121 Height = 33 Hint = 'Установки по умолчанию' Caption = 'Default' ParentShowHint = False ShowHint = True OnClick = SpeedButton1Click |
8 |
Edit1 |
Left = 48 Top = 124 Width = 121 Height = 21 TabOrder = 3 Text = 'Edit1' |
9 |
Edit2 |
Left = 48 Top = 156 Width = 121 Height = 21 TabOrder = 1 Text = 'Edit2' |
10 |
Edit3 |
Left = 48 Top = 188 Width = 121 Height = 21 TabOrder = 2 Text = 'Edit3' |
11 |
Edit4 |
Left = 48 Top = 224 Width = 121 Height = 21 TabOrder = 0 Text = 'Edit4' |
12 |
Edit5 |
Left = 8 Top = 12 Width = 97 Height = 21 TabOrder = 0 Text = 'fractal' |
13 |
Edit6 |
Left = 392 Top = 10 Width = 121 Height = 21 Hint = 'C_imag' ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0,6' Visible = False |
14 |
Edit7 |
Left = 264 Top = 10 Width = 121 Height = 21 Hint = 'C_real' ParentShowHint = False ShowHint = True TabOrder = 3 Text = '-0,5' Visible = False |
15 |
Edit8 |
Left = 96 Top = 336 Width = 81 Height = 21 TabOrder = 10 Text = 'Edit8' OnChange = Edit8Change |
16 |
Edit9 |
Left = 96 Top = 400 Width = 81 Height = 21 TabOrder = 11 Text = 'Edit9' OnChange = Edit9Change |
17 |
Edit10 |
Left = 96 Top = 472 Width = 81 Height = 21 TabOrder = 12 Text = 'Edit10' OnChange = Edit10Change |
18 |
RadioButton1 |
Left = 32 Top = 24 Width = 113 Height = 17 Caption = 'Мандельброт' Checked = True TabOrder = 8 TabStop = True OnClick = RadioButton1Click |
19 |
RadioButton2 |
Left = 32 Top = 48 Width = 113 Height = 17 Caption = 'Жулиа' TabOrder = 9 OnClick = RadioButton2Click |
20 |
RadioButton3 |
Left = 32 Top = 72 Width = 65 Height = 17 Caption = 'Жулиа 2' TabOrder = 13 OnClick = RadioButton3Click |
21 |
TImage |
Left = 1 Top = 1 Width = 598 Height = 598 Visible = False OnMouseDown = Image1MouseDown OnMouseMove = Image1MouseMove OnMouseUp = Image1MouseUp |
В данном приложении компонент TImage является основным компонентом формы. Он отображает на форме графическое изображение. Свойство Picture типа TPicture содержит отображаемый графический объект типа битовой матрицы, пиктограммы, метафайла или определенного пользователем типа. Основная особенность этого компонента, которая была использована при создании приложения, это возможность увеличения определенной области изображения отображаемого в этом компоненте. Эта возможность реализована с помощью таких событий как, OnMouseDown, OnMouseMove и OnMouseUp.
В данном приложении этот компонент использован в целях удобства расположения компонентов на основной форме. При расположении других компонентов на нем, они автоматически закрепляются на этот компоненте как на отдельной области, и в дальнейшем во время создания приложения эти компоненты невозможно будет перетащить в другое место вне этой области.
Использование нескольких этих компонентов позволяет не только зафиксировать все компоненты в определенном месте, но и дает возможность располагать их по группам.
При работе приложения были использованы следующие процедуры:
Таблица 3. Используемые процедуры
№ |
Процедура |
Назначение |
1 |
FormCreate(Sender: TObject); |
Задание размера области, в которой выводится фрактал, установка начальных координат относительно которых будет происходить построение фрактала, задание цветовой гаммы, в которой будет строиться фрактал по умолчанию |
2 |
Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); |
Построение прямоугольного фокуса увеличения области фрактала |
3 |
Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); | |
4 |
Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
5 |
Button1Click(Sender: TObject); |
Построение и сохранение графического изображения в файл |
6 |
Button2Click(Sender: TObject); |
Построение фрактала Мандельброта |
7 |
Button3Click(Sender: TObject); |
Построение фрактала Жулиа |
8 |
Button4Click(Sender: TObject); |
Построение второго фрактала Жулиа |
9 |
Button5Click(Sender: TObject); |
Завершение работы приложения |
10 |
SpeedButton1Click(Sender: TObject); |
Сброс координат всех фракталов на значение по умолчанию |
11 |
RadioButton1Click(Sender: TObject); |
Установка начальных координат для фрактала Мандельброта |
12 |
RadioButton2Click(Sender: TObject); |
Установка начальных координат для фрактала Жулиа |
13 |
RadioButton3Click |
Установка начальных координат для второго фрактала Жулиа |
14 |
TrackBar1Change(Sender: TObject); |
Изменение цвета фрактала
с уклоном в зеленый спектр(0- |
15 |
TrackBar2Change(Sender: TObject); |
Изменение цвета фрактала
с уклоном в синий спектр(0- |
16 |
TrackBar3Change(Sender: TObject); |
Изменение цвета фрактала
с уклоном в красный спектр(0- |
17 |
Edit8Change |
Значение отклонения зеленого цвета от цветовой гаммы которая была задана по умолчанию |
18 |
Edit9Change |
Значение отклонения синего цвета от цветовой гаммы которая была задана по умолчанию |
19 |
Edit10Change |
Значение отклонения красного цвета от цветовой гаммы которая была задана по умолчанию |
Приведем описание некоторых из вышеописанных процедур:
FormCreate(Sender: TObject);
Данная процедура выполняется
сразу после запуска
Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
При нажатии левой кнопки мыши над компонентом TImage срабатывает событие MouseDown. Если выделение происходит от места нажатия курсора вниз и вправо/влево, то задаются координаты левого/правого верхнего угла. Но если выделение происходит от места нажатия курсора вверх и влево/вправо, то задаются координаты правого/левого нижнего угла фокуса увеличения.
Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
При возникновении этого события происходит непосредственная прорисовка самой прямоугольной области выделения. Чтобы прямоугольник фокуса рисовался без заливки, т.е. только его граница, то при начале прорисовки восстанавливается фон изображения.
Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Это событие возникает при отжатии левой клавиши мыши над компонентом TImage, при этом сохраняются координаты места над, которым находится указатель в данный момент. Эти координаты являются конечными для прямоугольного фокуса увеличения.
Button1Click(Sender: TObject);
Процедура сохранения фрактала в виде графического изображения. Если поле вводе имени файла остается пустым то процедура выдает диалоговое окно с уведомлением что имя конечного файла не указано и, следовательно, программа не может сохранить файл, имя которого не задано.
Button2Click(Sender: TObject);
Данная процедура
var
cc, x, y: integer;
rX1, rY1, xx, zm, zr, zi: extended;
begin
Image1.Visible:=true; //Установка видимости компонента TImage;
btm:=Tbitmap.create; //Создание изображенияж
btm.Height:=image1.Height; //Высота области построения изображения;
btm.Width:=image1.Width; //Ширина области построения изображения;
r4:=strtoint(edit8.text);
g4:=strtoint(edit9.text);
b4:=strtoint(edit10.text);
Информация о работе Построение фракталов на языках программирования