Разработка графического редактора
Дисциплина:
Конструирование программ и языки программирования
ПОЯСНИТЕЛЬНАЯ
ЗАПИСКА к курсовому проекту
на тему
РАЗРАБОТКА ГРАФИЧЕСКОГО РЕДАКТОРА
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
. ОБЗОР МЕТОДОВ И АЛГОРИТМОВ
РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ
. ОБОСНОВАНИЕ ВЫБРАННЫХ
МЕТОДОВ И АЛГОРИТМОВ
. ОПИСАНИЕ ПРОГРАММЫ ДЛЯ
ПРОГРАММИСТА
3.1 Класс CShape - базовый абстрактный класс фигуры
.2 Класс
контейнер shapes - класс контейнер для фигур
3.3
Класс CLine : public
CShape. Класс линии
3.4
Класс CRect : public CLine. Класс прямоугольника
.5
Класс CEllipse : public CLine. Класс эллипса
.6
Класс CTriangle : public CLine. Класс треугольника
.7
Класс CRound : public CLine. Класс круга
.8
Класс CBezier : public CShape. Класс линии Безье
4. ОПИСАНИЕ
АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ
4.1 Метод System::Void
bRect_Click() - Нажатие кнопки прямоугольника
4.2
Метод System::Void
pictureBox1_MouseDown
4.3
Метод System::Void
pictureBox1_MouseDown
4.4
Метод System::Void
Form1_Load() - Загрузка формы
.5
Метод System::Void
Form1_FormClosed() - Закрытие формы
4.6 Метод shapes
* shapes::AddS(CShape *s) - Добавление элемента в список
.7 Метод void
CTriangle::Draw - Прорисовка треугольника
.8 Метод System::Void
undoToolStripMenuItem_Click() Отмена последнего действия
ЗАКЛЮЧЕНИЕ
ЛИТЕРАТУРА
ПРИЛОЖЕНИЯ
ВВЕДЕНИЕ
++- компилируемый статически типизированный язык программирования общего
назначения. Поддерживая разные парадигмы программирования, сочетает свойства
как высокоуровневых, так и низкоуровневых языков. В сравнении с его
предшественником - языком C, - наибольшее внимание уделено поддержке
объектно-ориентированного и обобщённого программирования. Являясь одним из
самых популярных языков программирования, C++ широко используется для
разработки программного обеспечения. Область его применения включает создание
операционных систем, разнообразных прикладных программ, драйверов устройств,
приложений для встраиваемых систем, высокопроизводительных серверов, а также
развлекательных приложений (например, видеоигры). Существует несколько
реализаций языка C++ - как бесплатных, так и коммерческих.
В данной курсовой работе использовалась среда программирования Microsoft Visual Studio Team System 2008, являющаяся одним из мощнейших средств по
разработке современных приложений. При разработке приложения учитывались особенности
программирования в данной среде, а именно создавался проект CLR Windows Forms Application.
1. ОБЗОР МЕТОДОВ И АЛГОРИТМОВ РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ
Перед тем как рисовать линии и фигуры, отображать текст, выводить
изображения и управлять ими, необходимо создать объект Graphics. Объект
Graphics представляет поверхность рисования GDI+ и является объектом, который
используется для создания графических изображений.
Ниже представлены два этапа работы с графикой.
. Создание объекта Graphics.
. Использование объекта Graphics для рисования линий и фигур,
отображения текста или изображения и управления ими.
После создания объекта Graphics его можно использовать для рисования линий и фигур, отображения текста
или изображения и управления ими. Ниже представлены основные объекты,
используемые с объектом Graphics.
. Класс Pen -
служит для рисования линий, контуров и отрисовки других геометрических
объектов.
. Класс Brush
- служит для заливки областей, например фигур, изображений или текста.
. Класс Font -
содержит описание фигур, которые должны использоваться при отображении текста.
. Структура Color
- содержит различные цвета.
2. ОБОСНОВАНИЕ ВЫБРАННЫХ МЕТОДОВ И АЛГОРИТМОВ
При создании приложения использовался выше описанный метод прорисовки
объектов на форме. Также для управления прорисовки объектов на форме с помощью
мыши был продуман свой собственный метод, а именно при нажатии кнопки мыши
запоминается первая координата курсора, при отпускании кнопки, по следующей
координате прорисовывается объект.
Для отмены действий был создан список объектов, который заполняется по
мере прорисовки, во время операции отмены последнего действия происходит
удаление последнего прорисованного объекта, очистка рабочего пространства, а
затем поочерёдная прорисовка объектов заново. Каждый элемент списка содержит в
себе указатели на следующий и на предыдущий элементы. Список имеет следующую
структуру:
3. ОПИСАНИЕ ПРОГРАММЫ ДЛЯ
ПРОГРАММИСТА
Рисунок 3.1 Диаграмма классов
.1 Класс CShape - базовый
абстрактный класс фигуры
Таблица 3.1 Поля класса CShape
Поле
|
Тип
|
Описание
|
color1
|
int
|
Код цвета в RGB
|
color2
|
int
|
Код цвета в RGB
для заливки
|
filled
|
bool
|
Заливка
|
x
|
float *
|
Указатель на массив координат по горизонтали
|
y
|
float *
|
Указатель на массив координат по вертикали
|
Таблица 3.2 Методы класса CShape
Метод класса
|
Тип
|
Описание
|
CShape()
|
Конструктор класса CShape
|
~CShape()
|
-
|
Деструктор
|
virtual Draw(PictureBox^ picbox) = 0
|
void
|
Чисто виртуальный метод прорисовки фигуры
|
virtual SetPoint(unsigned int i, float X, float Y)
|
void
|
Виртуальный метод добавления точки в массивы координат
|
SetFilled(bool f)
|
void
|
Установка свойства заполнения фигуры
|
SetColor(int i, Color col)
|
void
|
Установка цвета
|
virtual New() = 0
|
CShape *
|
Чисто виртуальный метод выделения памяти для фигуры
|
.2 Класс контейнер shapes
- класс контейнер для фигур
Таблица 3.3 Поля класса-контейнера shapes
Поле
|
Тип
|
Описание
|
next
|
shapes *
|
Указатель на следующий элемент в списке
|
prev
|
shapes *
|
Указатель на предыдущий элемент в списке
|
S
|
CShape *
|
Указатель на класс CShape
|
Таблица 3.4 Метода класса-контейнера shapes
Метод класса
|
Тип
|
Описание
|
shapes()
|
-
|
Конструктор класса shapes
|
AddS(CShape *s)
|
shapes *
|
Добавление элемента списка
|
DelS()
|
shapes *
|
Удаление элемента списка
|
Inc()
|
shapes *
|
Переход на следующий элемент списка
|
Dec()
|
shapes *
|
Переход на предыдущий элемент списка
|
Redraw(PictureBox^ picbox)
|
void
|
Перерисовка фигуры
|
3.3 Класс CLine : public
CShape. Класс линии
Таблица 3.5 Методы класса CLine
Метод класса
|
Тип
|
Описание
|
CLine()
|
-
|
Конструктор класса CLine
|
Draw(PictureBox^ picbox)
|
void
|
Прорисовка линии
|
New()
|
CShape *
|
Выделения памяти для линии
|
.4 Класс CRect : public CLine. Класс прямоугольника
Метод класса
|
Тип
|
Описание
|
Draw(PictureBox^ picbox)
|
void
|
Прорисовка прямоугольника
|
New()
|
CShape *
|
Выделения памяти для прямоугольника
|
.5 Класс CEllipse : public CLine. Класс эллипса
Таблица 3.7 Методы класса CEllipse
Метод класса
|
Тип
|
Описание
|
Draw(PictureBox^ picbox)
|
void
|
Прорисовка эллипса
|
New()
|
CShape *
|
Выделения памяти для эллипса
|
.6 Класс CTriangle : public CLine. Класс треугольника
Таблица 3.8 Методы класса CTriangle
Метод класса
|
Тип
|
Описание
|
Draw(PictureBox^ picbox)
|
void
|
Прорисовка треугольника
|
New()
|
CShape *
|
Выделения памяти для треугольника
|
.7 Класс CRound : public CLine. Класс круга
Таблица 3.9 Методы класса CRound
Метод класса
|
Тип
|
Описание
|
Draw(PictureBox picbox)
|
void
|
Прорисовка круга
|
New()
|
CShape *
|
Выделения памяти для круга
|
.8 Класс CBezier : public CShape. Класс линии Безье
Таблица 3.10 Поля класса CBezier
Поле
|
Тип
|
Описание
|
count
|
int
|
Счётчик нажатий кнопки
|
Таблица 3.11 Методы класса CBezier
Метод класса
|
Тип
|
Описание
|
CBezier()
|
-
|
Конструктор класса CBezier
|
SetPoint(unsigned int i, float X, float Y)
|
void
|
Переопределённый метод добавления точки в массивы координат
|
Draw(PictureBox^ picbox)
|
void
|
Прорисовка линии Безье
|
New()
|
CShape *
|
Выделения памяти для линии Безье
|
4. ОПИСАНИЕ АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ
.1 Метод System::Void bRect_Click() - Нажатие кнопки прямоугольника
. Начало.
. Выделение памяти на CRect
. Присваивание указателя CRect указателю CShape
. Установка цвета рамки и заливки прямоугольника.
. Конец.
.2 Метод System::Void pictureBox1_MouseDown() - Событие на нажатие кнопки
. Начало.
. Установка первой координаты фигуры
. Конец.
.3 Метод System::Void pictureBox1_MouseDown() - Событие на нажатие кнопки
. Начало.
. Установка следующей координаты фигуры
. Выделение памяти под новый объект фигуры
. Добавление фигуры в список
. Прорисовка новой фигуры
. Конец.
4.4 Метод System::Void
Form1_Load() - Загрузка формы
1. Начало.
. Выделение памяти для линии(по умолчанию)
. Инициализация списка для фигур
. Устанавливаем цвет линии
. Создаём Bitmap,
на котором будут производиться все действия
. Конец.
4.5 Метод System::Void
Form1_FormClosed() - Закрытие формы
Рисунок 4.1 Блок-схема алгоритма при закрытии формы
.6 Метод shapes * shapes::AddS(CShape *s) - Добавление элемента в список
Рисунок 4.2 Блок-схема алгоритма добавления элемента в список
изображение
сохранение заливка пространство
4.7 Метод void CTriangle::Draw(PictureBox^ picbox) - Прорисовка
треугольника
Рисунок 4.3 Блок-схема алгоритма рисования треугольника
.8 Метод System::Void undoToolStripMenuItem_Click() Отмена последнего
действия
Рисунок 4.4 Блок-схема алгоритма отмены последних действий
ЗАКЛЮЧЕНИЕ
В результате курсовой работы создана интуитивно понятная программа для
создания, просмотра и сохранения изображений, в которой реализованы функции
рисования различных фигур (с заливкой и без заливки). Также реализованы функция
очистки рабочего пространства и отмены последних действий (возможна отмена
нескольких действий).
Программный продукт выполнен в среде программирования Microsoft Visual
Studio Team System 2008, с использованием проекта CLR Windows Forms
Application.
Для дальнейшего расширения программы возможна разработка таких функций
приложения как: добавление текста в изображение, добавление толщины линий и
т.д.
ЛИТЕРАТУРА
1. Харви
М. Дейтел, Пол Дж. Дейтел - Как программировать на C++ - 2008
. Петцольд
- Программирование Для Microsoft Windows На С#. В
2-х Томах. Том 1 - 2002
. Петцольд
- Программирование Для Microsoft Windows На С#. В
2-х Томах. Том 2 - 2002
4. Информационный
портал: <#"656509.files/image007.gif">
Рисунок Б.1 Вид окна
приложения
При нажатии пункта меню
"Открыть Ctrl+O" появляется диалоговое окно, в котором вы можете
выбрать изображение.
Рисунок Б.2 Диалоговое окно
открытия изображения
После выбора файла
изображение отображается в рабочей области окна.
Рисунок Б.3 Вид окна
приложения с открытым изображением
При нажатии пункта меню
"Сохранить Ctrl+S" появляется диалоговое окно, в котором вы можете
сохранить изображение в различных форматах.
Рисунок Б.4 Вид диалогового
окна сохранения изображения
При нажатии пункта меню
"Очистить Ctrl+R" происходит очистка рабочей области
При нажатии на кнопки,
обозначающие различные фигуры, вы можете рисовать эти фигуры.
Рисунок Б.5 Вид окна с
нарисованными примитивами
При нажатии на кнопки,
позволяющие выбрать цвет, открывается диалоговое окно выбора цвета.
Рисунок Б.6 Вид диалогового
окна выбора цвета
Нажатием на галочку "С
заливкой" вы можете рисовать фигуры с заливкой
Рисунок Б.7 Вид окна с
нарисованными примитивами с заливкой
При нажатии пункта меню
"Отменить Ctrl+Z" происходит отмена последнего действия, возможна
отмена нескольких операций.
Рисунок Б.8 Вид окна до
отмены последних действий и после
При нажатии пункта меню
"Выход Alt+F4" происходит выход из программы.