Программные средства для создания копии графического документа на основе шаблона "Прототип"
Исследование основных средств моделирования и системных программных средств. Разработка Windows-приложения, реализованного на основе шаблона проектирования "Прототип" и позволяющего создать копию графического документа для дальнейшего редактирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.05.2017 |
Размер файла | 3,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
РЕФЕРАТ
Пояснительная записка содержит 42 листа, 23 рисунка, 8 использованных источников, 2 приложения.
WINDOWS, C#, ПРИЛОЖЕНИЕ, ПАТТЕРН ПРОЕКТИРОВАНИЯ, ПРОТОТИП, UML.
Объект разработки - приложение, реализующее создание копии графического документа для дальнейшего редактирования.
Цель работы -- реализовать приложение на основе шаблона проектирования «Прототип».
Технология разработки - объектно-ориентированная разработка программ на основе шаблонов проектирования.
Результаты работы - Windows-приложение, реализованное на основе шаблона проектирования «Прототип» и позволяющее создать копию графического документа для дальнейшего редактирования.
ВВЕДЕНИЕ
Любой паттерн проектирования, используемый при разработке информационных систем, представляет собой формализованное описание часто встречающейся задачи проектирования, удачное решение данной задачи, а также рекомендации по применению этого решения в различных ситуациях. Кроме того, паттерн проектирования обязательно имеет общеупотребимое наименование. Правильно сформулированный паттерн проектирования позволяет, отыскав однажды удачное решение, пользоваться им снова и снова. Важным начальным этапом при работе с паттернами является адекватное моделирование рассматриваемой предметной области. Это является необходимым как для получения должным образом формализованной постановки задачи, так и для выбора подходящих паттернов проектирования.
Сообразное использование паттернов проектирования дает разработчику ряд неоспоримых преимуществ. Модель системы, построенная в терминах паттернов проектирования, фактически является структурированным выделением тех элементов и связей, которые значимы при решении поставленной задачи. Помимо этого, модель, построенная с использованием паттернов проектирования, более проста и наглядна в изучении, чем стандартная модель. Тем не менее, несмотря на простоту и наглядность, она позволяет глубоко и всесторонне проработать архитектуру разрабатываемой системы с использованием специального языка. Применение паттернов проектирования повышает устойчивость системы к изменению требований и упрощает неизбежную последующую доработку системы.
Целью данного курсового проекта является ознакомление с принципом разработки программных средсв на основе паттернов проектирования.
моделирование прототип графический документ редактирование
1. АНАЛИЗ ПРОГРАММНЫХ СРЕДСТВ ДЛЯ СОЗДАНИЯ КОПИИ ГРАФИЧЕСКОГО ДОКУМЕНТА НА ОСНОВЕ ШАБЛОНА «ПРОТОТИП»
1.1 Анализ предметной области
Программные средства предназначены для разработки пользовательского приложения для создания копий графического документа и их дальнейшего редактирования. Под графическим документом будем понимать небольшие изображения различных форматов (jpg, bmp, png).В соответствии с анализом предметной области можно создать модель предметной области, представленную на рисунке 1. Модель включает в себя две сущности: «Изображение» и «Прототип». В качестве прототипов выступают объекты заданных форматов.
Рисунок 1 - Модель предметной области
1.2 Анализ функциональных требований
Основными функциональными требованиями являются: загрузка в приложение выбранных графических объектов; редактирование загруженных объектов; сохранение нового объекта. Создание программных средств позволит разработать упрощенный графический редактор.
Проектирование осуществляется на основе порождающего шаблона «Прототип». Пользователь может загружать свои изображения, редактировать их и сохранять изменения. Краткое описание основных вариантов использования приведено в таблице 1.
Таблица 1 - Краткое описание основных вариантов использования.
Действующее лицо |
Цель |
Краткое описание |
|
Пользователь |
Редактировать |
Пользователь должен иметь возможность загружать нужное ему изображение в редактор и осуществлять его редактирование. |
|
Пользователь |
Сохранить изменения |
Если пользователю понравилось отредактированное изображение то он может сохранить его. |
|
Пользователь |
Отменить изменения |
Так как редактирование происходит не с исходным файлом, а с его копией, пользователь может отменить изменения путем удаления копии исходного файла. |
На основании таблицы 1можно создать диаграмму вариантов использования для разрабатываемого ПО, включающую основные действия пользователя. Она представлена на рисунке 2.
Рисунок 2 - Диаграмма вариантов использования
Подробное описание вариантов использования представлено ниже в таблицах 2-4.
Таблица 2 - Вариант использования «Редактировать»
Вариант использования: Редактировать |
|
Идентификатор: 1 |
|
Краткое описание: Пользователь хочет загрузить и отредактировать изображение |
|
Главные действующие лица: Пользователь |
|
Предусловие: Приложение запущено |
|
Основной поток: 1. Пользователь выбирает операцию «Открыть». 2. Система предоставляет окно для выбора необходимого файла. 3. Пользователь выбирает файл. Изображение загружается в редактор. 4. Пользователь выбирает операцию «Редактировать». Приложение создает копию файла для редактирования. 5. Пользователь редактирует изображение. |
|
Постусловия: Изображение отредактировано |
|
Альтернативные потоки: Нет |
Таблица 3 - Вариант использования «Сохранить изменения»
Вариант использования: Сохранить изменения |
|
Идентификатор: 2 |
|
Краткое описание: Пользователь хочет сохранить измененное изображение |
|
Главные действующие лица: Пользователь |
|
Предусловие: Пользователь отредактировал изображение |
|
Основной поток: 1. Пользователь выбирает опцию «Сохранить». 2. Пользователь выбирает имя и путь к новому файлу. 3. В указанном месте создается новое изображение. |
|
Постусловие: Система сохраняет новое изображение |
|
Альтернативные потоки: Нет |
Таблица 4 - Вариант использования «Отменить изменения»
Вариант использования: Отменить изменения |
|
Идентификатор: 3 |
|
Краткое описание: Пользователь хочет отменить изменения изображения |
|
Главные действующие лица: Пользователь |
|
Предусловие:Пользователь отредактировал изображение |
|
Основной поток: 1. Пользователь выбирает опцию «Отменить изменения». 2. Система удаляет копию исходного изображения. |
|
Постусловие: Копия исходного изображения успешно удалена |
|
Альтернативные потоки: Нет |
Для уточнения взаимодействия между объектами в рамках использования варианта «Редактировать» была разработана диаграмма последовательности, представленная на рисунке 3.
Рисунок 3 - Диаграмма последовательности варианта использования «Редактировать»
2. ТЕХНОЛОГИЯ РАЗРАБОТКИ
2.1 Шаблон проектирования «Прототип»
Данный шаблон позволяет создавать новые экземпляры объектов посредством копирования существующих экземпляров. Ключевой момент шаблона «Прототип» заключается в том, что клиентский код может создавать новые экземпляры, не зная, экземпляр какого конкретно класса при этом создается. Иными словами, это шаблон создания объекта через клонирование другого объекта вместо создания через конструктор.
Для создания новых объектов паттерн «Прототип» использует прототипы. Прототип - это уже существующий в системе объект, который поддерживает операцию клонирования, то есть умеет создавать копию самого себя.
Подробное описание шаблона приведено в таблице 5.
Таблица 5 - Описание шаблона «Прототип»
Название и классификация паттерна |
«Прототип» - паттерн порождающий объекты[1]. |
|
Назначение |
Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этогопрототипа[1]. |
|
Применимость |
Паттерн используется чтобы: · избежать дополнительных усилий по созданию объекта стандартным путем, когда это непозволительно дорого для приложения. · избежать наследования создателя объекта (object creator) в клиентском приложении. Также этот шаблон проектирования используется, когда система не должна зависеть от того, как в ней создаются, компонуются и представляются продукты: · инстанцируемые классы определяются во время выполнения, например с помощью динамической загрузки; · для того чтобы избежать построения иерархий классов или фабрик, параллельных иерархии классов продуктов; · экземпляры класса могут находиться в одном из нескольких различных состояний. Может оказаться удобнее установить соответствующее число прототипов и клонировать их, а не инстанцировать каждый раз класс вручную в подходящем состоянии.[1]. |
|
Структура |
Диаграмма классов, описывающая шаблон «Прототип», приведена на рисунке 4. |
|
Участники |
1. Prototype-прототип: · Объявляет интерфейс для клонирования самого себя 2. ConcretePrototype - конкретный прототип: · Реализует операцию клонирования самого себя 3. Client- клиент: · Создает новый объект, обращаясь к прототипу с запросом клонировать себя[1]. |
|
Отношения |
Клиент обращается к прототипу, чтобы тот создал свою копию[1]. |
Рисунок 4-Диаграмма классов, описывающая шаблонПрототип
Пример реализации:
В качестве примера рассмотрим программу создания прототипов простых объектов.
usingSystem;
namespace Prototype
{
class MainApp
{
staticvoidMain()
{
// Создаем 2 экземпляра для клонирования
Prototype p1 =new ConcretePrototype1("I");
Prototype c1 = p1.Clone();
Console.WriteLine("Cloned: {0}", c1.Id);
Prototype p2 =new ConcretePrototype2("II");
Prototype c2 = p2.Clone();
Console.WriteLine("Cloned: {0}", c2.Id);
// Ожидаемпользователя
Console.Read();
}
}
// "Prototype"
abstractclass Prototype
{
privatestring id;
// Конструктор
public Prototype(string id)
{
this.id= id;
}
// Свойства
publicstring Id
{
get{return id;}
}
publicabstract Prototype Clone();
}
// Конкретныйпрототип №1
class ConcretePrototype1 : Prototype
{
// Constructor
public ConcretePrototype1(string id):base(id)
{
}
publicoverride Prototype Clone()
{
// Неполнаякопия
return(Prototype)this.MemberwiseClone();
}
}
// Конкретныйпрототип №2
class ConcretePrototype2 : Prototype
{
// Конструктор
public ConcretePrototype2(string id):base(id)
{
}
publicoverride Prototype Clone()
{
// Неполнаякопия
return(Prototype)this.MemberwiseClone();
}
}
}
2.2 Средства моделирования и системные программные средства
Для создания программы решено было использовать технологии объектно-ориентированного программирования в рамках языка С# и метод визуального построения интерфейса пользователя, успешно реализуемый в среде разработки MS Visual Studio. Разработка осуществлялась на основе технологии Windows Forms, используемою в Visual C# для создания интеллектуальных клиентских приложения на основе Windows, выполняемых в среде .NET Framework.
В процессе разработки программных средств также были использованы диаграммы UML. Язык UML предназначен для описания проектных моделей, их визуализации и документирования. В языке UML реализованы следующие основные принципы построения моделей сложных систем, которые используются в объектно-ориентированном анализе и проектировании (ООАП):
1. Принцип абстрагирования;
2. Принцип многомодельности;
3. Принцип иерархического представления модели[6].
В языке UML процесс ООАП имеет специальное назначение “рационально унифицированный процесс” Rational Unified Process (RUP).
Суть концепции RUP заключается в последующей декомпозиции на отдельные этапы, на каждом из которых осуществляется разработка соответствующих типов канонических диаграмм модели систем. При этом на начальных этапах RUP строятся логические представления статической модели структуры и, затем, логическое представление модели поведения, физическое представление модели системы[4].
3. ПРОЕКТИРОВАНИЕ
3.1 Проектирование интерфейса пользователя
На основе разработанных вариантов использования приложения был спроектирован интерфейс, внешний вид которого представлен на рисунке 6.
Рисунок 6 - Главное окно приложения
Главным окном приложения является окно «Редактор», изображенное на рисунке 6. Окно оснащено двумя формами для вывода изображений: одно для отображения исходного файла, другое для редактирования копии изображения. Кнопка «Редактировать» служит для создания копии исходного файла, для ее дальнейшего редактирования. Необходимость отмены изменений послужила основой для создания кнопки «Отменить изменения».
Меню программы состоит из двух категорий: «Файл» и «Редактирование». «Файл» содержит такие компоненты как: «Открыть» для выбора и загрузки нового изображения, «Сохранить» для сохранения измененного изображения, и «Выход» для завершения работы программы.
«Редактирование» включает в себя следующие элементы: «Яркость» для изменения яркости изображения, «Контрастность» для изменения контрастности изображения, и «Обесцветить» для создания черно-белого изображения.
Так же в ходе работы приложения используются две вспомогательные формы для установки необходимой яркости и контрастности изображения. Они представлены на рисунках 7 и 8.
Рисунок 7 - Окно изменения яркости
Рисунок 8 -Окно изменения контрастности
3.2 Проектирование ПО
На основе анализа модели предметной области, а также шаблона проектирования, лежащего в основе разрабатываемого ПО, было решено выделить в структуре проекта следующие классы: «Прототип», «Редактор» и «Интерфейс». Диаграмма классов приведена на рисунке 9.
Рисунок 9 - Диаграмма классов приложения
Класс «Интерфейс» содержит реализацию главной формы проекта, осуществляющей взаимодействие пользователя с приложением. Атрибутами класса выступают объекты класса «Прототип». Методы класса позволяют пользователю загружать изображения для дальнейшего редактирования, отменять изменения и сохранять измененное изображение.
Класс «Прототип» реализует шаблон прототип, который осуществляет клонирование загруженного изображения. В качестве атрибута содержит текущее изображение. Методы класса позволяют создать и удалить копию исходного объекта.
Класс «Редактор» отвечает за редактирование объекта «Прототипа», который является атрибутом класса. Методы класса позволяют изменить яркость и контрастность изображения, а также обесцветить его.
4. РЕАЛИЗАЦИЯ
Кодирование данной программы было произведено на языке C# в среде объектно-ориентированного визуального программирования MSVisualC# 2010 с использованием технологии Windows Forms. Код программы представлен в приложении А. Диаграмма программных классов представлена на рисунке 10.
Рисунок 10 - Диаграмма программных классов
На диаграмме классов отображены основные классы системы и функциональные зависимости между ними. Спецификации классов приведены в таблицах 6, 7.
Таблица 6 - Спецификация класса Prototype
Класс: |
Prototype |
|
Назначение: |
класс, реализующий создание копий изображений на основе шаблона «Прототип» |
|
Атрибуты: |
_MyImage - исходное изображение. _clonedImage - копия-клон исходного изображения. _bitmapPath - хранит путь к исходному изображению. |
|
Методы: |
public Bitmap MyImage - преобразование исходного изображения в объект Bitmap. public Bitmap MakePrototype - создает прототипы исходного изображения. public string BitmapPath -хранит путь к исходному изображению. public void SaveBitmap(string saveFilePath) - сохраняет измененную копию изображения. public void ClearImage() - удаляет копию изображения. |
Таблица 7- Спецификация класса Editing
Класс: |
Editing |
|
Назначение: |
Реализует методы редактирования копии исходного изображения. |
|
Атрибуты: |
- |
|
Методы: |
public Bitmap SetBrightness(int brightness, Bitmap imm) - изменяет яркость переданного функции изображения на заданную. public Bitmap SetContrast(double contrast, Bitmap imm) - изменяет контрастность переданного функции изображения на заданную. public Bitmap SetGrayscale(Bitmap imm) - обесцвечивает переданное функции изображение. |
Структура программы включает в себя следующие компоненты:
· BrightnessForm.Designer.cs - конструктор формы изменения яркости;
· ContrastForm.Designer.cs - конструктор формы изменения контрастности;
· Editing.cs - реализация класса «Редактор»;
· Program.cs - программный модуль приложения;
· ImageProcessing.Designer.cs - конструктор интерфейса приложения;
· Prototype.cs - реализация класса «Прототип»;
· Prototype.exe - исполняемый файл приложения.
Физическая структура программы представлена на диаграмме компонентов, представленной на рисунке 11.
Приложение разворачивается на одном компьютере. Все компоненты исполняются под управлением ОС Windows.
Рисунок 11 - Диаграмма компонентов
Диаграмма деятельности процедуры SetBrightness(), которая отвечает за изменение яркости изображения, представлена на рисунке 12.
Рисунок 12 - Диаграмма деятельности SetBrightness().
5. ТЕСТИРОВАНИЕ
На основе представленных вариантов использования приложения был разработан план тестирования, результаты которого приведены в таблице 10.
Таблица 10 -Функциональное тестирование
Вариант использования |
Тест |
Результат |
|
Редактировать |
1.Загрузка исходного изображения |
Тест завершен успешно. В окне редактора отображается выбранное изображение. Результат теста представлен на рисунке 13. |
|
2.Щелчок по кнопке «Редактировать» |
Тест завершен успешно. В окне редактора на панели «Новое изображение» отображается копия исходного изображения. Функции меню «Редактировать» стали доступны. Результат теста представлен на рисунке 14. |
||
3.Редактирование изображения |
Тест завершен успешно. Результаты теста представлены на рисунках 15, 16, 17. |
||
3.1Выбор в меню функции «Яркость» |
На экране появилась дополнительная форма для настройки яркости изображения. |
||
3.2 Щелчок по кнопке «ОК» |
Изображение изменило свою яркость на заданную. |
||
4.1 Выбор в меню функции «Контрастность» |
На экране появилась дополнительная форма для настройки контрастности изображения. |
||
4.2 Щелчок по кнопке «ОК» |
Изображение изменило свою контрастность на заданную. |
||
5.Выбор в меню функции «Обесцветить» |
Изображение стало черно-белым. |
||
Сохранить изменения |
Выбор в меню функции «Сохранить» |
Тест завершен успешно. Отредактированное изображение сохранено. Результат теста представлен на рисунке 18. |
|
Отменить изменения |
Нажатие кнопки «Отменить изменения» |
Тест завершен успешно. Отредактированное изображение удалено. Вместо него на панель редактирования загружена новая копия исходного изображения. Результат теста представлен на рисунке 19. |
Рисунок 13 - Окно программы после загрузки нового изображения
Рисунок 14 - Окно программы после нажатия кнопки «Редактировать»
Рисунок 15 - Окно программы после изменения яркости изображения
Рисунок 16 - Окно программы после изменения контрастности изображения
Рисунок 17 - Окно программы после обесцвечивания изображения
Рисунок 18 - Окно программы сохранения отредактированного изображения
Рисунок 19 - Окно программы после отмены изменений
5.1 Модульное тестирование
Рисунок 20 - время выполнения модульных тестов
Рисунок 21 - покрытие кода модульными тестами
Код модульного тестирования приведен в приложении Б.
6. АНАЛИЗ КАЧЕСТВА КОДА
Рисунок 22 - Анализ кода решения
Рисунок 23 - Анализ метрики кода в решении
ЗАКЛЮЧЕНИЕ
На начальном этапе разработки курсового проекта была проанализирована предметная область разработки и построена модель предметной области проектируемой системы. Затем, на основе анализа функциональных требований, были разработаны варианты использования приложения. На этапе проектирования, с учетом выбранных вариантов использования, был разработан интерфейс пользователя, отвечающий основным функциям системы. На основе анализа модели предметной области, а также шаблона проектирования, лежащего в основе разрабатываемого ПО, была спроектирована диаграмма классов приложения. В результате успешного выполнения всех этапов было создано приложение Redaktor.exe. По итогам проведения тестирования можно сделать вывод, что все функции разработанных программных средств работают корректно, следовательно, цель курсового проектирования достигнута.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного программирования. Паттерны проектирования. -- СПб: Питер, 2001. -- 368 с.: ил. (Серия «Библиотека программиста»).
2. А.В. Сивохин, Б.Г. Хмелевской. Технология разработки программного обеспечения. Описание лабораторных работ. - ПГУ: Пенза, 2002.
3. Гурьянов Л.В., Князев В.Н., Ракова А.Н., Самуйлов С.В., Сивохин А.В., Дорофеева О.А., Кольчугина Е.А., Казакова И.А., Шашков Б. Д., Шибанов С.В. «Методические указания к дипломному проектированию для студентов специальности «Программное обеспечение вычислительной техники и автоматизированных систем». - Пенза: Издательство ПГУ, 2010.
4. П. Кролл, Ф. Кратчен. RationalUnifiedProcess - это легко. - М.: «Кудиц-Образ», 2004.
5. К. Ларман. Применение UML и паттернов проектирования. М. , Вильямс, 2002.
6. Язык UML. Руководство пользователя http://sitemonitor.ru/doc/UML_HTM/index.htm
7. Лекция Киевского политехнического института. Диаграмма деятельности. Диаграмма последовательности. http://www.its.kpi.ua/itm/tkot/Students/Lec2_3_Acvitity[p].pdf
8. Материал из свободной энциклопедии «Википедия».
ПРИЛОЖЕНИЕ А (обязательное). ТЕКСТ ПРОГРАММЫ
ImageProcessing.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace redaktor
{
publicpartialclassImageProcessing : Form
{
OpenFileDialog oDlg;
SaveFileDialog sDlg;
Prototype imagePrototype = newPrototype();
Editing imageNew = newEditing();
double zoomFactor = 1.0;
public ImageProcessing()
{
InitializeComponent();
oDlg = newOpenFileDialog(); // Open Dialog Initialization
oDlg.RestoreDirectory = true;
oDlg.InitialDirectory = "E:\\";
oDlg.FilterIndex = 1;
oDlg.Filter = "jpg Files (*.jpg)|*.jpg|gif Files (*.gif)|*.gif|png Files (*.png)|*.png |bmp Files (*.bmp)|*.bmp";
sDlg = newSaveFileDialog(); // Save Dialog Initialization
sDlg.RestoreDirectory = true;
sDlg.InitialDirectory = "E:\\";
sDlg.FilterIndex = 1;
sDlg.Filter = "jpg Files (*.jpg)|*.jpg|gif Files (*.gif)|*.gif|png Files (*.png)|*.png |bmp Files (*.bmp)|*.bmp";
}
privatevoidвыходToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
privatevoidоткрытьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (DialogResult.OK == oDlg.ShowDialog())
{
imagePrototype.MyImage = (Bitmap)Bitmap.FromFile(oDlg.FileName);
imagePrototype.BitmapPath = oDlg.FileName;
pictureBox2.Image = imagePrototype.MyImage;
panel1.AutoScroll = true;
panel1.AutoScrollMinSize = newSize(Convert.ToInt32(imagePrototype.MyImage.Width * zoomFactor), Convert.ToInt32(imagePrototype.MyImage.Height * zoomFactor));
this.Invalidate();
}
}
privatevoid button1_Click(object sender, EventArgs e)
{
сохранитьИзмененияToolStripMenuItem.Enabled = true;
яркостьToolStripMenuItem.Enabled = true;
контрастностьToolStripMenuItem.Enabled = true;
обесцветитьToolStripMenuItem.Enabled = true;
pictureBox1.Image = imagePrototype.MakePrototype;
this.AutoScroll = true;
this.AutoScrollMinSize = newSize(pictureBox2.Width, pictureBox2.Height);
this.Invalidate();
}
privatevoidяркостьToolStripMenuItem_Click(object sender, EventArgs e)
{
BrightnessForm bFrm = newBrightnessForm();
bFrm.BrightnessValue = 0;
if (bFrm.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
pictureBox1.Image = imageNew.SetBrightness(bFrm.BrightnessValue, imagePrototype.MakePrototype);
this.Invalidate();
this.Cursor = Cursors.Default;
}
}
privatevoidконтрастностьToolStripMenuItem_Click(object sender, EventArgs e)
{
ContrastForm cFrm = newContrastForm();
cFrm.ContrastValue = 0;
if (cFrm.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
pictureBox1.Image = imageNew.SetContrast(cFrm.ContrastValue, imagePrototype.MakePrototype);
this.Invalidate();
this.Cursor = Cursors.Default;
}
}
privatevoidобесцветитьToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
pictureBox1.Image = imageNew.SetGrayscale(imagePrototype.MakePrototype);
this.Invalidate();
this.Cursor = Cursors.Default;
}
privatevoidсохранитьИзмененияToolStripMenuItem_Click(object sender, EventArgs e)
{
if (DialogResult.OK == sDlg.ShowDialog())
{
imagePrototype.SaveBitmap(sDlg.FileName);
}
}
privatevoid button2_Click(object sender, EventArgs e)
{
imagePrototype.ClearImage();
pictureBox1.Image = null;
pictureBox1.Image = imagePrototype.MakePrototype;
this.Invalidate();
}
}
}
Prototype.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespace redaktor
{
publicclassPrototype
{
privatestring _bitmapPath;
publicBitmap _MyImage;
publicBitmap _clonedImage;
public Prototype()
{
}
publicBitmap MyImage
{
get
{
if (_MyImage == null)
_MyImage = newBitmap(1, 1);
return _MyImage;
}
set
{
_MyImage = value;
}
}
publicBitmap MakePrototype
{
get
{
Rectangle sourceRectangle = newRectangle(0, 0, _MyImage.Width, _MyImage.Height);
_clonedImage = _MyImage.Clone(sourceRectangle, PixelFormat.DontCare);
return _clonedImage;
}
set
{
_clonedImage = value;
}
}
publicstring BitmapPath
{
get { return _bitmapPath; }
set { _bitmapPath = value; }
}
publicvoid SaveBitmap(string saveFilePath)
{
_bitmapPath = saveFilePath;
if (System.IO.File.Exists(saveFilePath))
System.IO.File.Delete(saveFilePath);
_clonedImage.Save(saveFilePath);
}
publicvoid ClearImage()
{
_clonedImage = newBitmap(1, 1);
}
}
}
Editing.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespace redaktor
{
classEditing
{
publicBitmap SetBrightness(int brightness, Bitmap imm)
{
if (brightness < -255) brightness = -255;
if (brightness > 255) brightness = 255;
Color c;
for (int i = 0; i < imm.Width; i++)
{
for (int j = 0; j < imm.Height; j++)
{
c = imm.GetPixel(i, j);
int cR = c.R + brightness;
int cG = c.G + brightness;
int cB = c.B + brightness;
if (cR < 0) cR = 1;
if (cR > 255) cR = 255;
if (cG < 0) cG = 1;
if (cG > 255) cG = 255;
if (cB < 0) cB = 1;
if (cB > 255) cB = 255;
imm.SetPixel(i, j, Color.FromArgb((byte)cR, (byte)cG, (byte)cB));
}
}
return imm;
}
publicBitmap SetContrast(double contrast, Bitmap imm)
{
if (contrast < -100) contrast = -100;
if (contrast > 100) contrast = 100;
contrast = (100.0 + contrast) / 100.0;
contrast *= contrast;
Color c;
for (int i = 0; i < imm.Width; i++)
{
for (int j = 0; j < imm.Height; j++)
{
c = imm.GetPixel(i, j);
double pR = c.R / 255.0;
pR -= 0.5;
pR *= contrast;
pR += 0.5;
pR *= 255;
if (pR < 0) pR = 0;
if (pR > 255) pR = 255;
double pG = c.G / 255.0;
pG -= 0.5;
pG *= contrast;
pG += 0.5;
pG *= 255;
if (pG < 0) pG = 0;
if (pG > 255) pG = 255;
double pB = c.B / 255.0;
pB -= 0.5;
pB *= contrast;
pB += 0.5;
pB *= 255;
if (pB < 0) pB = 0;
if (pB > 255) pB = 255;
imm.SetPixel(i, j, Color.FromArgb((byte)pR, (byte)pG, (byte)pB));
}
}
return imm;
}
publicBitmap SetGrayscale(Bitmap imm)
{
Color c;
for (int i = 0; i < imm.Width; i++)
{
for (int j = 0; j < imm.Height; j++)
{
c = imm.GetPixel(i, j);
byte gray = (byte)(.299 * c.R + .587 * c.G + .114 * c.B);
imm.SetPixel(i, j, Color.FromArgb(gray, gray, gray));
}
}
return imm;
}
}
}
ПРИЛОЖЕНИЕ Б (обязательное). ДИАГРАММА КЛАССОВ
Код модульного тестирования
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ShippingControl;
namespace UnitTestSC
{
[TestClass]
public class dbTest
{
scDB DB;
[TestMethod]
public void CreateDB() // Создаём объект объект для работы с данными и проверяем его на неравность NULL
{
DB = new scDB();
Assert.IsNotNull(DB.scClients);
}
[TestMethod]
public void CreateClient() // Добавляем нового клиента и проверяем на правильность записи данных одно из его свойств
{
DB = new scDB();
DB.scClients.Add(new scDB.scClient("Клиент1", "11", "mail1@mail.mail", new scDB.scShippingVehiclePoint("Адрес1", new System.Drawing.PointF(25, 25))));
Assert.IsTrue(DB.scClients[0].Address.GPSpoint.X==25);
}
[TestMethod]
public void CreateShippingVehicle() // Добавляем новое средства доставки и проверяем на правильность записи данных одно из его свойств
{
DB = new scDB();
DB.scShippingVehicles.Add(new scDB.scShippingVehicle("Водитель1","33"));
Assert.IsTrue(DB.scShippingVehicles[0].FIO == "Водитель1");
}
[TestMethod]
public void CreateOrder() // Добавляем клиентов и средство доставки, используя их создаём новый заказ и проверяем на правильность записи данных в заказе, проверяя несколько свойств внутри объекта
{
DB = new scDB();
DB.scClients.Add(new scDB.scClient("Клиент1", "11", "mail1@mail.mail", new scDB.scShippingVehiclePoint("Адрес1", new System.Drawing.PointF(25, 25))));
DB.scClients.Add(new scDB.scClient("Клиент2", "22", "mail2@mail.mail", new scDB.scShippingVehiclePoint("Адрес2", new System.Drawing.PointF(35, 35))));
DB.scShippingVehicles.Add(new scDB.scShippingVehicle("Водитель1", "33"));
DB.scOrders.Add(new scDB.scOrder("Заказ1",DateTime.Now, scDB.scOrder.StatusEnum.Loading,DB.scClients[0],DB.scClients[1],DB.scShippingVehicles[0]));
Assert.IsTrue((DB.scOrders[0].Sender.Address.GPSpoint.X + DB.scOrders[0].Customer.Address.GPSpoint.X) == 60);
}
}
}
Размещено на Allbest.ru
...Подобные документы
Исследование основных принципов создания интерактивных книг. Выбор сказки и средств реализации. Подготовка графического материала. Написание сценария, создание прототипа. Разработка интерактивной книги по мотивам сказки Х.К. Андерсена "Гадкий утенок".
курсовая работа [4,4 M], добавлен 30.11.2014История развития средств создания и демонстрации компьютерных презентаций. Краткий обзор программных средств: MS Power Point, Open Office Impress, iWork и некоторых online – сервисов. Проектирование и разработка презентации на основе собственного шаблона.
курсовая работа [7,5 M], добавлен 19.12.2012История Hyper Text Markup Language, таблицы стилей, уровни Cascading Style Sheets. Описание средств разработки шаблона. Верстка элементов шаблона и создание стилей. Требования к качеству html-верстки и тестирование сайта. Листинг html и css-кода.
курсовая работа [237,5 K], добавлен 28.12.2014Основы работы операционной системы Windows XP. Работа в текстовом процессоре Microsoft Word: ввода, редактирования и форматирования текста, автоматизации разработки документа, создания графических объектов, создания комплексного текстового документа.
курсовая работа [3,6 M], добавлен 25.04.2009Ввод информации на рабочий лист. Документы предметной области, содержащие информацию, необходимую для оформления товарно-транспортной накладной. Общее понятие о Microsoft Excel: автоматизация, создание формул. Технология создания шаблона документа.
контрольная работа [332,1 K], добавлен 18.11.2012Сущность, структура и значение приложения Microsoft Office 2003, его основные возможности. Концепция электронного документа и его обязательные реквизиты. Особенности технологии создания и редактирования текстового документа в Microsoft Word 2003.
реферат [23,0 K], добавлен 23.11.2010Основы работы с Windows: копирование, перемещение, удаление файлов и папок. Word: создание и применение стилей шаблона документа. Excel: поиск и выборка данных в соответствии с назначенным критерием. Глобальная сеть Интернет: поиск информации в сети.
контрольная работа [1,4 M], добавлен 24.07.2010История развития веб-технологий и существующие проблемы. Назначение и установка Symfony Framework. Создание приложения на основе технологий Symfony Framework. Установка дополнительных библиотек через composer, верстка шаблона, настройка сервисов.
дипломная работа [712,6 K], добавлен 05.07.2017Изучение набора прикладных программ операционной системы Windows. Особенности редактирования графического объекта и масштабирования рисунка в редакторе Paint. Вычислительные операции и возможности калькулятора. Создание документов в текстовом процессоре.
контрольная работа [577,0 K], добавлен 05.11.2012Разработка сетевого ресурса для ОАО "МРСК Урала" для облегчения роботы персонала. Описание интерфейса, правил поиска и пользования документами, особенностей их редактирования и удаления. Пример создания нового документа на основе готовых шаблонов.
контрольная работа [24,8 K], добавлен 08.06.2017Разработка плана здания с помощью графического редактора AutoCAD. Описание предметной области и схемы модели данных. Разработка приложения, позволяющего работать с базой с помощью диалогового окна Windows. Программный код формы, прописывание кодов.
курсовая работа [2,2 M], добавлен 30.07.2010Описание технических средств. Описание программного обеспечения. Порядок создания документа. Способы получения справочной информации. Создание нового документа. Загрузка рабочего документа. Рабочая книга, ячейки.
контрольная работа [44,8 K], добавлен 09.04.2004Разработка графического интерфейса проекта (панель инструментов имеет 6 кнопок). Процедуры разделов программы: документа ThisDocument, программного модуля Module1 и пользовательских форм UserForm1, UserForm2 и Деление_амёбы. Тестирование программы.
курсовая работа [29,5 K], добавлен 14.12.2010Изучение основных алгоритмов генерации различных видов фракталов. Выбор языка и среды программирования. Характеристика структурных элементов растрового графического редактора фракталов. Описание интерфейса приложения, порядок редактирования изображений.
курсовая работа [1,2 M], добавлен 04.04.2014Вопросы реализации шаблона типового сайта диссертационного совета СевКавГТУ. Разработка базы данных для шаблона сайта с помощью фреймворка Django и Aptana Studio 3. Обоснование требований к техническому обеспечению. Расчет цены программного продукта.
дипломная работа [2,5 M], добавлен 26.09.2012Разработка программы для операционной системы Windows с использованием VisualC++ (6.0, .NET). Рассмотрение основ программного моделирования работы прибора (электрического чайника). Правила создания классов устройства и его графического интерфейса.
курсовая работа [424,3 K], добавлен 03.06.2014Настройка текстового редактора MS Word. Создание текстового документа. Создание шаблона. Форматирование сложного документа. Создание списков и колонок текста. Создание таблиц. Создание формул. Связывание и внедрение объектов. Создание макросов.
контрольная работа [36,6 K], добавлен 10.05.2004Разработка программного модуля, позволяющего создать с помощью шаблона класса "бинарное дерево" картотеку абонентов, содержащую сведенья о телефонах и их владельцах. Выбор технологии, языка и среды программирования. Выбор стратегии тестирования программы.
курсовая работа [1,1 M], добавлен 11.12.2010Обоснование технической платформы разрабатываемой системы. Анализ уровней детализации, шаблона графического приложения системы. Архитектура программного обеспечения. Алгоритм решения задачи "Инициализация OpenGL", "Загрузка 3D файла", "Ввод данных".
дипломная работа [818,3 K], добавлен 23.04.2014Критерии оценки эффективности и качества создания программных средств. Роль трудоемкости и длительности создания программных средств в определении эффективности их создания. Требования к качеству, суммарные затраты на разработку программного средства.
реферат [26,7 K], добавлен 10.10.2014