2 Описание проектного решения
Целью данной работы является разработка простейшего графического редактора с помощью объектно-ориентированного языка программирования, с использованием его графических функций и методов.
Реализованный графический редактор позволяет осуществлять работу с как уже имеющимися изображениями, так и создавать собственные с помощью различных возможностей таких как:
создание векторных объектов (круга, квадрата, скруглённого квадрата, ромба) и их различные модификации (растягивание) в эллипс, прямоугольник и прямоугольник со скруглёнными вершинами соответственно. Возможно изменение цвета фигур, толщины линии их образа;
создание рисунков с помощью линий (карандаша), кисти различной толщины, спрея (объект, который создаёт эффект напыления пикселей на определённую небольшую область рисунка);
вывод текста на редактируемый рисунок;
стирание любой нарисованной картинки;
а также реализовано копирование, вставка а также сохранение картинки в формате *.bmp.
Объектно-ориентированный анализ и проектирование нельзя определить ни как проектирование сверху вниз, ни как проектирование снизу вверх; его можно скорее назвать «возвратным проектированием», что подразумевает ступенчатый процесс разработки системы с постепенной модификацией различных, но, тем не менее, согласованных между собой логических и физических представлений о системе в целом.
Созданная система в процессе деятельности может быть представлена рядом состояний, которые осуществляют те или иные действия. В системе можно выделить некоторое начальное состояние и конечное, завершающее работу состояние. Анализ системы следует начать с жизненного цикла - рисунок 2.1.
Рисунок 2.1 - Жизненный цикл системы
На рисунке 2.1 приняты следующие обозначения:
1 - выбран инструмент линия, карандаш, геометрическая фигура или текст;
2 - выбран инструмент цвета;
3 - выбран инструмент геометрическая фигура;
4,5,6,7,8,9 - выбран инструмент линия, карандаш, геометрическая фигура или текст;
10 - выбрана определенная толщина линии;
11 - некоторый этап рисования завершен, необходимо сохранить рисунок;
12 - рисунок сохранен, необходимо продолжить рисование;
13 - редактирование или рисование завершено, выход из программы;
14 - отредактированный или нарисованный рисунок сохранён, завершение работы.
15 - выбор другого инструмента, редактирование;
16 - рисунок сохранён, редактирование;
17 - выбран определённый тип заполнения;
Из рисунка 2.1 видно, что начальным этапом является создание нового или открытие уже существующего рисунка. Когда рисунок создан, можно осуществлять его редактирование, сохранение под новым именем либо в уже созданном файле. Для редактирования разработан ряд инструментов, осуществляющих различные функции:
карандаш;
ластик;
заливка;
распылитель;
рисование прямоугольников;
рисование скругленных прямоугольников;
рисование окружностей;
рисование линий;
рисование пирамиды.
рисование ромбов;
ввод текста;
Существуют также инструмент выбора цвета инструмента и цвета заливки.
В процессе редактирования происходит взаимодействие объектов, отвечающих за стиль рисования тех или иных фигур.
Рисунок 2.2 - Информационная модель взаимодействия объектов Ф и З
Рисунок 2.3 - Информационная модель взаимодействия объектов Ф, З, F, G
Взаимодействие объектов кнопка “фигура” и кнопка “заполнение” показано на диаграмме переходов состояний (рисунок 2.4).
Рисунок 2.4 - Модели состояний для кнопок “фигура” и “заполнение”
Так как большинство действий в системе производится в соответствии с событиями от мыши, то основные входные данные для системы - это текущие координаты и сами события MouseDown, MouseUp, MouseMove.
Диаграмма потоков данных приведена на рисунке 2.5.
Рисунок 2.5 - Диаграмма потоков данных
Так как не было необходимости в проекте создавать специальные классы для реализации объектов, то в иерархии классов будут приведены основные классы среды Delphi, используемые для
реализации основных возможностей проекта и их описание.
Иерархия используемых графических классов изображена на рисунке 2.6.
Рисунок 2.6 - Иерархия классов