logo
Разработка графического редактора

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 - Иерархия классов