Разработка программного приложения для графического редактора

Общие сведения о растровых, векторных и гибридных графических редакторах. Сравнительный анализ GIMP и Paint.NET, их достоинства и недостатки. Создание программы в среде Visual Studio. Разработка ее интерфейса и программный код, скриншоты тестирования.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.06.2021
Размер файла 1,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

  • Содержание
  • Введение
  • Глава 1. Общие сведения о графических редакторах
    • 1.1 Растровые графические редакторы
    • 1.2 Векторные графические редакторы
    • 1.3 Гибридные графические редакторы
  • Глава 2. Анализ и сравнение существующих графических редакторов
    • 2.1 GIMP(GNU Image Manipulation Program)
    • 2.2 Paint.NET
    • 2.3 Сравнительный анализ GIMP и Paint.NET
  • Глава 3. Выбор средств разработки программы
  • Глава 4. Процесс разработки
    • 4.1 Интерфейс программы
    • 4.2 Разработка программного кода
  • Глава 5. Тестирование
  • Заключение
  • Список использованных источников
  • Введение
  • В настоящее время рынок программного обеспечения переполнен различными программами и редакторами, которые позволяют обрабатывать и редактировать цифровые фото. Без компьютерной графики невозможно представить себе не только компьютерный, но и материальный мир. На сегодняшний день компьютеры и компьютерная графика являются одной из неотъемлемых частей жизни современного общества. Для примера возьмем медицину с её компьютерной томографией, научные исследования с их визуализацией строения вещества, векторных полей и других данных, рекламные щиты, разнообразные журналы, спецэффекты в фильмах, визитки, телевидение, творчество и так далее - все это в той или иной мере имеет отношение к компьютерной графике. Поэтому созданы программы для создания и редактирования изображений, то есть графические редакторы.
  • Актуальность работы обусловлена тем, что графический редактор является отличным инструментом для работы с изображениями, позволяющий пользователям практически любого уровня подготовки решать стоящие перед ними задачи.
  • Целью нашей курсовой работы является закрепление знаний по программированию на языке C# и приобретение опыта создания реального программного приложения. Для достижения поставленной цели выделены следующие задачи:

1. Проанализировать предметную область;

2. Изучить дополнительную литературу по программированию на языке C#;

3. Разработать программное приложение для графического редактора;

4. Протестировать созданное программное приложение.

Глава 1. Общие сведения о графических редакторах

Графический редактор -- программа (или пакет программ), позволяющая создавать, просматривать, обрабатывать и редактировать цифровые изображения (рисунки, картинки, фотографии) на компьютере.

Существует три типа графических редакторов:

- Растровые графические редакторы;

- Векторные графические редакторы;

- Гибридные графические редакторы.

Рассмотрим их подробнее.

1.1 Растровые графические редакторы

Растровый графический редактор- специализированная программа, предназначенная для создания и обработки растровых изображений, то есть графики, которая в память компьютера записывается как набор точек, а не как совокупность формул геометрических фигур. Подобные программные продукты нашли широкое применение в работе художников-иллюстраторов, при подготовке изображений к печати типографским способом или на фотобумаге, публикации в интернете.

Растровые графические редакторы позволяют пользователю рисовать и редактировать изображения на экране компьютера, а также сохранять их в различных растровых форматах, таких как, например, JPEG и TIFF, позволяющих хранить растровую графику с незначительным снижением качества за счёт использования алгоритмов сжатия с потерями, PNG и GIF, поддерживающими хорошее сжатие без потерь, и BMP, также поддерживающем сжатие (RLE), но в общем случае представляющем собой несжатое «попиксельное» описание изображения.

В противоположность векторным редакторам, растровые используют для представления изображений матрицу окрашенных точек (bit map). Большинство современных растровых редакторов содержат векторные инструменты редактирования в качестве вспомогательных, но сохраняют изображения только в растровых форматах.

Чтобы охарактеризовать растровые графические редакторы, можно сравнить их с обычным рисованием, то есть с рисованием карандашом на обычной бумаге. Основное отличие между рисунками на бумаге и на экране монитора состоит в том, что на мониторе любое изображение дискретно, то есть оно состоит из конечного числа прямоугольных точек, каждая из которых может быть только одного цвета из фиксированной палитры. У рисунка на бумаге такую минимальную единицу, как точка, найти нельзя. На бумаге невозможно нарисовать два совершенно одинаковых рисунка. С помощью растрового редактора можно создать именно такой дискретный рисунок, состоящий из фиксированного числа точек, после чего можно изменять цвет каждой точки по отдельности. Именно поэтому любой редактор такого типа перед созданием рисунка просит указать его точные размеры и иногда палитру цветов. Такие редакторы позволяют строить линии и графические примитивы, заливать области определенным цветом, вбивать текст, рисовать различными инструментами - карандашами, кистями, распылителями. В зависимости от выбранного инструмента строятся линии с различными свойствами - полупрозрачные, с размытыми краями, заполненные текстурой. Всегда есть возможность увеличивать масштаб, для того чтобы можно было работать с отдельными точками. Обычно такие редакторы используют для работы с уже готовыми изображениями - например, для создания коллажей и обработки фотографий.

Растровые графические редакторы позволяют пользователю рисовать и редактировать изображения на экране компьютера, а также сохранять их в различных растровых форматах. Например, JPEG и TIFF, позволяют сохранять растровую графику с незначительным снижением качества за счёт использования алгоритмов сжатия с потерями, PNG и GIF, поддерживают хорошее сжатие без потерь, и BMP, также поддерживает сжатие, но в общем случае представляет собой несжатое «попиксельное» описание изображения.

Растровые графические редакторы имеют как минимум два значительных недостатка:

1) Масштабирование. Дело в том, что при масштабировании рисунка его четкость не увеличивается, и пикселей не становится больше. На самом деле они просто растягиваются, из-за чего очень хорошо заметно ухудшение качества рисунка;

2) Размер файла. Файл растрового графического редактора сохраняет в себе информацию о каждой точке рисунка, ее положение, цвет. Причем это самая минимальная информация, хотя и она занимает немало памяти. В более мощных редакторах сохраняется по несколько слоев, и размер отдельных файлов может достигать десятков и сотен мегабайтов.

Чтобы избавиться от проблемы с масштабированием, изобрели технологию интерполяции изображений. Эта технология состоит в том, что на картинку добавляются промежуточные пиксели, которые располагаются между основными пикселями и принимают цвет, средний для соседних ему. Однако такая технология не на много, более того, она почти не увеличивает качества изображения, а лишь увеличивает его размер.

1.2 Векторные графические редакторы

Векторные графические редакторы позволяют пользователю создавать и редактировать векторные изображения непосредственно на экране компьютера, а также сохранять их в различных векторных форматах, например, CDR, AI, EPS, WMF или SVG.

Преимущество векторной графики заключается в том, что форму, цвет и пространственное положение составляющих ее объектов можно описывать с помощью математических формул, а не описывать каждый пиксель в отдельности.

Важным объектом векторной графики является сплайн. Сплайн - это кривая, посредством которой описывается та или иная геометрическая фигура. На сплайнах построены современные шрифты TryeType и PostScript.

У векторной графики много достоинств. Она экономна в плане дискового пространства, необходимого для хранения изображений: это связано с тем, что сохраняется не само изображение, а только некоторые основные данные, используя которые, программа всякий раз воссоздает изображение заново. Кроме того, описание цветовых характеристик почти не увеличивает размер файла.

Объекты векторной графики легко трансформируются и модифицируются, что не оказывает практически никакого влияния на качество изображения. Масштабирование, поворот, искривление могут быть сведены к паре-тройке элементарных преобразований над векторами.

В тех областях графики, где важное значение имеет сохранение ясных и четких контуров, например, в шрифтовых композициях, в создании логотипов и прочее, векторные программы незаменимы.Векторная графика может включать в себя и фрагменты растровой графики: фрагмент становится таким же объектом, как и все остальные (правда, со значительными ограничениями в обработке).

Важным преимуществом программ векторной графики является развитые средства интеграции изображений и текста, единый подход к ним. Поэтому программы векторной графики незаменимы в области дизайна, технического рисования, для чертежно-графических и оформительских работ.

Однако, с другой стороны, векторная графика может показаться чрезмерно жесткой, "фанерной". Она действительно ограничена в чисто живописных средствах: в программах векторной графики практически невозможно создавать фотореалистические изображения.Кроме того, векторный принцип описания изображения не позволяет автоматизировать ввод графической информации, как это делает сканер для точечной графики.

Векторная графика описывает изображения с использованием прямых и изогнутых линий, называемых векторами, а также параметров, описывающих цвета и расположение. Например, изображение древесного листа описывается точками, через которые проходит линия, создавая тем самым контур листа. Цвет листа задается цветом контура и области внутри этого контура. В растровом редакторе лист дерева описывается конкретным расположением и цветом каждой точки сетки.

При редактировании элементов векторной графики Вы изменяете параметры прямых и изогнутых линий, описывающих форму этих элементов. Вы можете переносить элементы, менять их размер, форму и цвет, но это не отразится на качестве и1х визуального представления. Векторная графика не зависит от разрешения, т.е. может быть показана в разнообразных выходных устройствах с различным разрешением без потери качества.

Векторное представление заключается в описании элементов изображения математическими кривыми с указанием их цветов и заполняемости (вспомните, круг и окружность - разные фигуры). Красный эллипс на белом фоне будет описан всего двумя математическими формулами - прямоугольника и эллипса соответствующих цветов, размеров и местоположения. Очевидно, такое описание займет значительно меньше места, чем в случае описания растровым редактором. Еще одно преимущество - качественное масштабирование в любую сторону.

Увеличение или уменьшение объектов производится увеличением или уменьшением соответствующих коэффициентов в математических формулах. К сожалению, векторный формат становится невыгодным при передаче изображений с большим количеством оттенков или мелких деталей (например, фотографий). Ведь каждый мельчайший блик в этом случае будет представляться не совокупностью одноцветных точек, а сложнейшей математической формулой или совокупностью графических примитивов, каждый из которых, является формулой. Это приводит к утяжелению файла.

Кроме того, перевод изображения из растрового в векторный формат (например, программой Adobe Strime Line или Corel OCR-TRACE) приводит к наследованию последним невозможности корректного масштабирования в большую сторону. От увеличения линейных размеров количество деталей или оттенков на единицу площади больше не становится. Это ограничение накладывается разрешением вводных устройств (сканеров, цифровых фотокамер и др.).

1.3 Гибридные графические редакторы

Гибридные графические редакторы предназначены для работы со сканированными документами.

Идеальным средством решения задач, связанных с обработкой электронных чертежей, полученных с помощью сканирования, является программа, которая позволяет быстро вносить изменения непосредственно в растровую форму представления исходных чертежей. То есть цепочка операций при этом сокращается и выглядит следующим образом: "сканирование -- растровый файл -- редактирование растрового файла -- чертеж". Наилучшим инструментом является именно гибридный - растрово-векторный редактор, программа, обеспечивающая интерактивную работу с векторной и растровой графикой одновременно с помощью набора общих инструментов для обеих форм представления графики, с возможностью их взаимного преобразования.

В случае со внесением изменений в архивную копию чертежа изделия гибридный редактор также позволяет работать с растровой и векторной графикой одновременно и преобразовывать одну в другую.

Векторизация и растеризация - специфические парные функции гибридного редактора, обеспечивающие двунаправленное преобразование графических объектов. Кроме того, такие функции осуществляются отдельно с помощью программ-векторизаторов (векторизация) и в растровых редакторах при импорте векторных файлов (растеризация). Реализация процесса преобразования растровой графики в векторную в гибридном редакторе может иметь некоторые особенности. Так, она может происходить не сразу, а постепенно, во время всего жизненного цикла сканированного чертежа, при внесении в него изменений и добавлений в векторной форме. Постепенно доля векторной графики будет возрастать, пока весь чертеж не превратится в векторный. Кроме того, возможна поэтапная векторизация путем трассировки растра. Если же требуется перевести весь чертеж в векторную форму, для этого может быть использована непосредственная векторизация, проводимая программами-векторизаторами, например Vectory.

2. Анализ и сравнение существующих графических редакторов

Рассмотрим примеры существующих графических редакторов.

2.1 GIMP(GNUGNU (/gnu/ (инф.), рекурсивный акроним от англ. GNU's Not UNIX -- «GNU не UNIX») -- свободная Unix-подобная операционная система, разрабатываемая Проектом GNU. Image Manipulation Program)

На рисунке 1 представлен интерфейс программы GIMP[5].

Рисунок 1- Скриншот программы GIMP

Типичные задачи, которые можно решать при помощи GIMP, включают в себя создание графики и логотипов, масштабирование и кадрирование фотографий, раскраску, комбинирование изображений с использованием слоёв, ретуширование и преобразование изображений в различные форматы.

Традиционно GIMP считается свободным аналогом ряда проприетарных редакторов (чаще всего называется Adobe Photoshop), хотя сами разработчики часто возражают против такой формулировки.

Работа с фотографиями

В GIMP присутствует набор инструментов цветокоррекции:

· кривые;

· уровни;

· микшер каналов;

· постеризация;

· тон-насыщенность;

· баланс цветов;

· яркость-контраст;

· обесцвечивание.

При помощи фильтров, инструментов, масок и слоёв с разными типами наложения (всего 22) можно:

· выравнивать заваленный горизонт;

· убирать искажения, вносимые оптикой;

· корректировать перспективу;

· выполнять клонирование объектов с учётом перспективы;

· кадрировать фотографии;

· удалять дефекты вроде пыли на матрице (штамп, лечебная кисть);

· имитировать использование различных цветофильтров;

· «вытаскивать» потерянную детализацию в тенях;

· многое другое.

Реализовано управление цветом.

Рисование

· несколько рисующих инструментов;

· свободно масштабируемые кисти;

· поддержка кистевой динамики;

· поддержка графических планшетов.

Экранные фильтры

Дополнительные возможности по коррекции изображений на протяжении всей работы реализованы в виде экранных фильтров. К ним относятся:

· имитация разных типов дальтонизма (протанопияПротанопия (от греч. рсюфб «первый», греч. ?(н)- отриц. частица, греч. ?шйт «зрение») -- форма частичной цветовой слепоты, обычно врожденной, которое характеризуется невозможностью отличать некоторые цвета и оттенки в областях жёлто-зелёных, пурпурных -- голубых цветов., дейтеранопияДейтеранопия (от греч. деэфеспт «второй», греч. ?(н)- отриц. частица, греч. ?шйт «зрение») -- характерна для 1 % людей, форма частичной цветовой слепоты, обычно врождённой, которая характеризуется пониженной чувствительностью к некоторым цветам, в основном к зелёному, тританопияТританопия (от греч. фсЯфпт «третий», греч. ?(н)- отриц. частица, греч. ?шйт «зрение») -- отклонение от нормального цветовосприятия, форма частичной цветовой слепоты, обычно врожденной, которое характеризуется не возможностью отличать некоторые цвета и оттенки в областях сине-жёлтых, фиолетово-красных цветов.);

· гамма-коррекция;

· коррекция контраста;

· управление цветом.

Настраиваемый интерфейс

· плавающие диалоги легко группируются и перегруппируются;

· возможна полная перенастройка клавиатурных комбинаций, действий мыши, а также устройств ввода, таких как Griffin Powermate;

· любое меню можно превратить в свободно перемещаемое окно (Linux/UNIX).

Автоматизация

Отсутствие средств автоматической записи сценариев компенсируется в GIMP большим числом языков, на которых можно писать сценарии:

TinyScheme, иначе Script-Fu (в комплекте с программой);

Python (в комплекте с программой);

Ruby;

Perl;

C# (GIMP# -- gimp-sharp);

Java (экспериментально, часть проекта gimp-sharp);

Tcl (в настоящее время не поддерживается).

С помощью этих инструментов можно писать как интерактивные сценарии и модули для GIMP, так и создавать изображения полностью автоматически, например, генерировать «на лету» изображения для веб-страниц внутри программ CGI или выполнять пакетную цветокоррекцию и преобразование изображений. Следует отметить, что для пакетной обработки изображений всё же лучше подходят пакеты наподобие ImageMagick.

Недостатки

В настоящее время использование стабильной версии GIMP в коммерческом дизайне, полиграфии и фотографии сопряжено с рядом сложностей, а во многих случаях и вовсе невозможно:

· нет поддержки плашечных цветов (и палитры Pantone);

· нет полноценной поддержки цветовых моделей, CIELAB и CIE XYZ;

· нет поддержки HDRi и операторов отображения тонов;

· нет процедурных (корректирующих) слоёв и эффектов (стилей) слоёв;

UFRaw

UFRaw - утилита и расширение GIMP для проявки цифровых негативов RAW.

Работа с форматом PDF

GIMP поддерживает импорт и экспорт PDF-файлов при помощи Poppler.

2.2 Paint.NET

На рисунке 2 представлен интерфейс программы Paint.NET[4].

Paint.NET создан как проект старшекурсников по компьютерным наукам весной 2004 года.Рик Брюстер, один из основных разработчиков, в своём блоге сказал, что версия 1.0 была написана «за 4 месяца… и содержала 36 000 строк кода». Недавний релиз, версия 3.10 -- приблизительно 140 000 строк кода. Проект Paint.NET продолжался летом и по осенний семестр 2004 г., в результате чего появились версии 1.1 и 2.0.

Рисунок 2-Скриншот программы Paint.NET

Плюсы:

· Отлично проработанный интерфейс. Комфортно расположены элементы, имеются движимые панели инструментов - можно удобно настраивать интерфейс.

· Большое количество инструментов. Можно хорошо обработать фотографию: подвести линии, корректировать формы, подбавить цвета.

· Фильтры для автокоррекции. Можно инвертировать цвета, сделать автокоррекцию цвета, вырезать цвет, сделать фотографию в стиле сепия или чёрно-белой.

· Большое количество разных видов размытия, резкости, улучшения фотографий и прочих эффектов.

· Возможность работать на слоях. Можно рисовать на одном слое без вреда для другого.

1. Есть подключаемые плагины. По своему желанию можно расширить функционал программы.

2. Низкая ресурсоёмкость. Работает даже на слабых машинах.

Минусы:

1. Требует обязательной установки и обновления.NET Framework.

2. Отсутствует инструмент кистевого размытия.

3. Не кроссплатформенная. Нет официальной версии для Linux и Mac OSX.

2.3 Сравнительный анализ GIMPи Paint.NET

Для более наглядной демонстрации плюсов и минусов приведем таблицу 1, таблицу 2 и таблицу 3:

Таблица 1 - Поддержка операционных систем

Windows

MacOSX

Linux

GIMP

+

+

+

Paint.NET

+

-

+-+- Неполное

Таблица 2 - Поддержка различных цветовых моделей

Raw

BMP

GIF

JPEG

PNG

TIFF

PSD

PSP

XCF

GIMP

+

+

+

+

+

+

+

+

+

Paint.NET

+

+

+

+

+

+-

+-

-

-

Таблица 3 - Инструменты для работы с изображениями

Подавление шума

Коррекция дисторсииДисторсия (от лат. distorsio, distortio -- искривление) -- аберрация оптических систем, при которой коэффициент линейного увеличения изменяется по полю зрения объектива. При этом нарушается геометрическое подобие между объектом и его изображением.

Подготовка к печати

GIMP

+

+

+

Paint.NET

+

-

+

На основе проведенного анализа программ выдвигаются следующие требования к создаваемому программному продукту:

1. Поддержка операционной системы Windows;

2. Реализация нескольких рисующих инструментов (Кисть, ластик, линия, прямоугольник, эллипс и настройка размера, пипетка);

3. Настройка толщины кисти, ластика и линии;

4. Реализация палитры, а также кнопка более углубленной настройки цвета;

5. Способность открывать и сохранять изображения как минимум в трех форматах (PNG,JPEG,BMP), а также кнопка создания нового файла.

Глава 3. Выбор средств разработки программы

На основе поставленных целей и требований к создаваемому продукту лучшей средой разработки программы будет Visual Studio, наиболее удобным языком программирования -C#.

Microsoft Visual Studio - линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework.NET Framework -- программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду., Xbox, Windows Phone .NET Compact Framework и SilverlightMicrosoft Silverlight -- это программная платформа для написания и запуска многофункциональных интернет-приложений RIA, схожая с Adobe Flash, включающая в себя модуль для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA. Версия 2.0 добавила поддержку для языков .NET[1][2] и интеграцию с IDE..

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSenseи возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).Visual Studio построена на архитектуре, поддерживающей возможность использования встраиваемых дополнений (англ. Add-Ins) -- плагинов от сторонних разработчиков, что позволяет расширять возможности среды разработки.

Visual Studio включает один или несколько компонентов из следующих:

1. Visual Basic .NET, а до его появления -- Visual Basic;

2. Visual C++;

3. Visual F# (включён начиная с Visual Studio 2010);

4. Visual C# (включён начиная с Visual Studio .NET).

В последнем понадобится классBitmap.Он инкапсулирует точечный рисунок GDI+, состоящий из данных точек графического изображения и атрибутов рисунка. Bitmap используется для работы с изображениями, определяемыми данными точек и находится в пространстве имен System Drawning.

Точечный рисунок содержит данные элементов отображения (точек) и атрибуты графического изображения. Существует множество стандартных форматов сохранения точечных рисунков в файл. Класс GDI+ поддерживает следующие форматы файлов: BMP, GIF, EXIG, JPG, PNG и TIFF.

Можно создать изображения из файлов, потоков и других источников, используя один из конструкторов Bitmap, и сохранить их в поток или файловую систему с помощью метода Save. Изображения от рисовываются на экране или в памяти с помощью метода Draw Image объекта Graphics

Также понадобится класс File Dialog, а точнее, Open File Dialog и Save File Dialog. Open File Dialog отображает диалоговое окно, позволяющее пользователю открыть файл. Этот класс не наследуется. Save File Dialog предлагает пользователю выбрать местоположение для сохранения файла. Этот класс не наследуется. Они обладают свойствами и методами, с помощью которых можно открывать и сохранять файлы всевозможных графических разрешений, назначать имя сохраняемого файла, сохранять изображение, с уже имеющимся названием и так далее, которые будут использованы при создании графического редактора.

Глава 4. Процесс разработки

4.1 Интерфейс программы

Сначала, опираясь на требования к продукту, создадим удобный интерфейс программы, добавим иконки, изменить цвета и нанести все так, что было удобно и понятно на интуитивном уровне (Рисунок 3).

Рисунок 3 - Скриншот интерфейса создаваемой программы.

Программа состоит из основного модуля Form1, осуществляющего синхронизацию процесса обработки данных и взаимодействие конкретных экземпляров конкретных объектов.

На данной форме расположим следующие компоненты:

1. pictureBox1 - холст, на котором будет основное изображение.

2. toolStrip1 - меню инструментов. В нем находятся

A. Кнопка создания нового изображения, открытие и сохранение (newP,openP,saveP);

B. Надпись«Толщина» и выпадающий список, который регулирует толщину кисти (Lsize, sizeCB);

C. Текст (Цвет кисти), кнопка подробной настройки цвета + отображение текущего цвета и 8 кнопок быстрой смены на указанные цвета (Pcolor,colorB,whiteC,blackC,greenC,redC,blueC,orange,yellowC,purpleC);

Кнопка очистки холста (clearPaint).

toolStrip2 -второе меню инструментов. В нем находятся 7 кнопок, при нажатии на которые будет выбираться следующий инструмент:

A. Кисть (brush);

B. Ластик (eraser);

C. Линия (line);

D. Прямоугольник (rectangle);

E. Эллипс (ellipse);

F. Пипетка (pip);

G. None(none), нужна при запуске программы.

4.2 Разработка программного кода

Глобальные переменные

Для того чтобы программа рисовала только при нажатии мыши, надо завести переменную, которая будет отслеживать это нажатие:

boolisPressed;

Также понадобится отслеживать начальные и конечные координаты мыши, для рисования простых фигур (квадрат, прямоугольник, круг, эллипс, линия), для этого соответственно заведем 4 переменные:

Intx1,y1,x2,y2;

Чтобы можно было рисовать, нужно завести кисть:

Penpen;

Также надо регулировать толщину кисти и цвет:

IntlineWidth=2;

Colorforecolor;

Выбирать инструмент мы будем через строку selectedTool:

stringselectedTool;

Чтобы при рисовании до отжатия кнопки мыши фигура меняла свой размер в зависимости от позиции мыши, надо обратиться к Bitmap:

Bitmapsnapshot, tempDraw;

Инициализация компонентов

Определяем цвет кисти и создаем её с толщиной lineWidth:

foreColor = Color.Orange;

pen = new Pen(foreColor, lineWidth);

Начальный инструмент не выбран:

selectedTool=”none”;

none.Checked=true;

А размеры Bitmap-ов равны размерам pictureBox1:

snapshot=newBitmap(pictureBox1.ClientRectangle.Width,pictureBox1.ClientRectangle.Height);

tempDraw = (Bitmap)snapshot.Clone();

Дополнительныеметоды

Методclearочищаетхолст:

public void clear()

{

Graphics g = pictureBox1.CreateGraphics();

g.Clear(Color.White);

pictureBox1.Image = null;

snapshot = new Bitmap(snapshot.Width,snapshot.Height);

tempDraw = (Bitmap)snapshot.Clone();

g.Dispose();

}

Метод ReloadColor меняет цвет кисти и кнопки отражения цвета:

public void ReloadColor(Color a)

{

foreColor = a;

colorB.BackColor = foreColor;

pen.Color = foreColor;

}

События для pictureBox1

Когда кнопка мыши кликнет, активируется событие pictureBox1_MouseDown, которое переведет is Pressed в true, сохранит начальные координаты (x1,y1) и скопирует snapshot в temp Draw:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

isPressed = true;

x1 = e.X; y1 = e.Y;

tempDraw = (Bitmap)snapshot.Clone();

}

Когда курсор мыши будет двигаться, активируется события pictureBox1_MouseMove, которое сначала проверит, нажата ли кнопка мыши, если да, то сохраняет координаты мыши (x2,y2) и вызывает перерисовку pictureBox1:

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

if (isPressed)

{

x2 = e.X; y2 = e.Y;

pictureBox1.Invalidate();

pictureBox1.Update();

}

}

Когда кнопку мыши отжали, активируется событие pictureBox1_MouseUp, которое is Pressed переводит на false, а tempdraw копирует в snapshot:

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)

{

isPressed = false;

snapshot = (Bitmap)tempDraw.Clone();

}

Событие pictureBox1_Paint срабатывает при необходимости перерисовки элемента управления и является как раз тем событием, которым мы все рисуем. В зависимости от выбранного инструмента будет рисоваться нужная фигура:

private void pictureBox1_Paint(objectsender, PaintEventArgse)

{

if (selectedTool != "brush" &&selectedTool != "eraser") temp Draw = (Bitmap)snapshot.Clone(); //Если значение selected Tool неравно кисти и неравностерке, то копируем snapshot в temp Draw. Это нужно для визуального удобства при рисовании (Рисуннок4)

Graphicsg = Graphics.FromImage (temp Draw); //Создает новыйGraphics из указанного tempDraw

switch (selectedTool) //Смотрит, какой инструмент выбран

{

case "line"://Если выбрана линия, рисует её в заданных координатах

if (tempDraw != null)

g.DrawLine(pen, x1, y1, x2, y2);

break;

case "rectangle": //Если выбран прямоугольник, рисует его в заданных координатах(для четырех сторон)

if (tempDraw != null)

{

if (x2 < x1 && y2 < y1)

{g.FillRectangle(newSolidBrush(foreColor),x2,y2,Math.Abs(x2-x1),Math.Abs(y2-y1));

}

else if (x2 < x1 && y2 > y1)

{

g.FillRectangle(new SolidBrush(foreColor), x2, y1, Math.Abs(x2 - x1), y2 - y1);

}

else if (x2 > x1 && y2 < y1)

{

g.FillRectangle(new SolidBrush(foreColor), x1, y2, x2 - x1, Math.Abs(y2 - y1));

}

else

g.FillRectangle(new SolidBrush(foreColor), x1, y1, x2 - x1, y2 - y1);

}

break;

case "brush": //Если выбрана кисть, рисует её в заданных координатах if (tempDraw != null)

g.DrawLine(pen, x1, y1, x2, y2);

x1 = x2;

y1 = y2;

break;

case "eraser"://Если выбран ластик, рисует его в заданных координатах

if (tempDraw != null)

g.FillEllipse(new SolidBrush(pictureBox1.BackColor), x1, y1, lineWidth, lineWidth);

x1 = x2;

y1 = y2;

break;

case "ellipse"://Если выбран эллипс, рисует его в заданных координатах

g.FillEllipse(new SolidBrush(foreColor), x1, y1, x2 - x1, y2 - y1);

break;

}

g.Dispose();//Освобождает все ресурсы g

e.Graphics.DrawImageUnscaled(tempDraw, 0, 0); //Рисует заданное изображение в данных координатах (Рисунок 4)

}

Событие picture Box1_Mouse Click активируется, когда кликают кнопкой мыши. Оно предназначено для пипетки и работает по тому же принципу, то есть, если выбран инструмент пипетка, то он возвращает пиксель, где была нажата кнопка и меняет цвет через Reload Color(см. выше):

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)

{

if (selectedTool == "pip")

{

Bitmap copy = new Bitmap(snapshot);

ReloadColor(copy.GetPixel(e.X, e.Y));

}

}

Рисунок 4 - Зависимость размера от положения мыши

События для меню инструментов

Для первого меню:

Для кнопки “создать” воспользуемся методом clear(см. выше):

private void newP_Click(object sender, EventArgs e)

{

clear();

}

При клике на кнопку “Открыть” откроется диалоговое окно, в нем выбирается файл. После нажатия “ОК” окно закроется, очистит все изображения методом clear, потом откроет выбранное изображение в pictureBox1 и оттуда скопирует его в snapshotи tempDraw, после этого переименует нашу программу на путь к изображению:

private void openP_Click(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

clear();//Очищение

pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);

pictureBox1.Refresh();

pictureBox1.Update();

snapshot = new Bitmap(pictureBox1.Image);

tempDraw = new Bitmap(snapshot);

this.Text = openFileDialog1.FileName; //Взаголовокназваниефайла

}

}

При клике на кнопку “Сохранить” откроется диалоговое окно, в котором надо выбрать путь, название файла и формат, для того чтобы сохранить его в указанном месте, указанным именем и выбранным форматом, а после назначает название программы именем сохраненного файла:

private void saveP_Click(object sender, EventArgs e)

{

saveFileDialog1.RestoreDirectory = true;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string fileName = saveFileDialog1.FileName;

string strFilExtn = fileName.Remove(0, fileName.Length - 3);

this.Text = fileName;

switch (strFilExtn)

{

case "bmp": snapshot.Save(fileName, System.Drawing.Imaging.Image Format.Bmp); break;

case "jpg": snapshot.Save(fileName, System.Drawing.Imaging.Image Format.Jpeg); break;

case "png": snapshot.Save(fileName, System.Drawing.Imaging.Image Format.Png); break;

default: break;

}

}

}

Чтобы можно было менять толщину кисти через sizeCB, есть событие sizeCB_TextChanged. Когда текст в sizeCB меняется, толщина становится равна этому значению. Чтобы не возникало ошибок при случайном(или намеренном) написании текста в sizeCB, воспользуемся tryи catch:

private void sizeCB_TextChanged(object sender, EventArgs e)

{

try

{

lineWidth = int.Parse(sizeCB.Text);

pen = new Pen(foreColor, lineWidth);

}

catch { }

}

При нажатии на кнопку цвета кисти, вылазит окно с настройкой и выбором цвета, при нажатии на который цвет меняется при помощи ReloadColor:

private void toolStripButton1_Click(object sender, EventArgs e)

{

if (colorDialog1.ShowDialog() == DialogResult.OK)

{

ReloadColor(colorDialog1.Color);

}

}

Дальше идут 8 кнопок “быстрого доступа”, при нажатии на которые цвета меняются на цвет кнопки:

#region Цвета

private void whiteC_Click(object sender, EventArgs e)

{

ReloadColor(Color.White);

}

private void blackC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Black);

}

private void greenC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Green);

}

private void redC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Red);

}

private void blueC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Blue);

}

private void orangeC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Orange);

}

private void yellowC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Yellow);

}

private void purpleC_Click(object sender, EventArgs e)

{

ReloadColor(Color.Purple);

}

#endregion

Для второго меню:

На все 7 кнопок при клике действует одно событие tool_click. Сначала все кнопки отжимаются, затем выбранная становится нажатой, а selectedTool изменяется на имя выбраной кнопки:

private void tool_click(object sender, EventArgs e)

{

brush.Checked = false;

line.Checked = false;

rectangle.Checked = false;

eraser.Checked = false;

ellipse.Checked = false;

none.Checked = false;

pip.Checked = false;

ToolStripButton selected = sender as ToolStripButton;

selected.Checked = true;

selectedTool = selected.Name;

}

программа графический редактор интерфейс

Глава 5. Тестирование

На рисунках 5-9 представлены скриншоты тестирования программы в разных ситуациях.

Рисунок 5 - Тест кисти

Рисунок 6 - Тест ластика

Рисунок 7 - Тест линий

Рисунок 8 - Тест прямоугольников и цветовой палитры

Рисунок 9 - Тест эллипса и пипетки

Заключение

Данная курсовая работа потребовала прочтения большого количества литературного материала, а также были изучены основные типы графических редакторов, их достоинства и недостатки. Познакомившись с наиболее популярными в настоящее время программами для просмотра графических изображений, была достигнута поставленная цель курсовой работы: создан графический редактор.

Для разработки выбран язык С#, среда программирования Visual Studio, так как он больше всего удобен для поставленных целей и задач. В ходе выполнения курсового проекта закреплены понятие объектно-ориентированного программирования. Программа, описанная в курсовом проекте разработана в соответствии с постановкой задачи. Интерфейс созданной программы удобен, прост, наглядно отображает ее возможности. Редактор снабжен системой всплывающих подсказок.

Тестирование подтвердило, что программа корректно выполняет обработку данных и демонстрацию результатов. Всё это свидетельствует о работоспособности программы и позволяет сделать вывод о ее пригодности для создания и редактирования графических изображений.

Список использованных источников

1 Симонович С.В. Компьютерная графика. - СПБ: АСТ-Пресс, 2005. - 480с.

2 Петров М.Н. Компьютерная графика. - СПБ.: Питер, 2007. -478с.

3 Шилдт Герберт. C# 4.0 полное руководство - СПБ: ООО "И.Д. Вильямс", 2011. - 1056 с.

4 Википедия -Paint.NET.

5 Википедия -GIMP

Размещено на Allbest.ru

...

Подобные документы

  • Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.

    курсовая работа [1,3 M], добавлен 28.07.2013

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • Разработка и освоение в современном производстве информационной подсистемы. Создание базы данных в среде MS SQL Server 2008 и приложения в среде MS Visual Studio 2012. Процесс ввода при выборе пунктов меню. Заполнение формы с критериями на фильтрацию.

    отчет по практике [834,4 K], добавлен 27.11.2013

  • Общие сведения о графических редакторах, понятия компьютерной растровой и векторной графики, форматов. Обзор и сравнительный анализ современных программ обработки и просмотра графических изображений: Paint, Corel Draw, Adobe Photoshop, MS PowerPoint.

    дипломная работа [283,9 K], добавлен 09.08.2010

  • Разработка программного продукта, предназначенного для тестирования знаний пользователя по теме "Тепловые двигатели" нa языкe C++ в среде Micrоsоft Visual Studio с использовaниeм библиотeки MFC. Функциональное назначение созданного Windows-приложения.

    курсовая работа [954,4 K], добавлен 25.06.2011

  • Создание титров с использованием видео-редактора Sony Vegas Pro 10.0 и графического редактора. Придание способности двигаться и видимости жизни объектам. Анимация в среде 3D Studio Max 2010. Воспроизведение визуализированной последовательности кадров.

    курсовая работа [2,0 M], добавлен 17.01.2013

  • Функциональные возможности графического редактора Paint. Устройства персонального компьютера и их назначения. Стандартные программы операционной системы Windows. Приложения системы графического редактора к решению задач графики, теоретической механики.

    курсовая работа [156,5 K], добавлен 05.12.2008

  • Проектирование приложения на языке С# в среде Microsoft Visual Studio 2008: составление алгоритмов сегментации текста документа и распознавания слова "Указ" в нем, создание архитектуры и интерфейса программного обеспечения, описание разработанных классов.

    курсовая работа [2,4 M], добавлен 05.01.2011

  • Разработка алгоритма программного бизнес-приложения в интегрированной среде Microsoft Visual Studio 2005 на языке С#, в целях автоматизации работы помощника инспектора ПТО, регистрирующего и направляющего на технический осмотр транспортные средства.

    дипломная работа [1,8 M], добавлен 24.12.2013

  • Функционально-структурная организация персонального компьютера. Операционная система Windows. Функции стандартизации программы графического редактора Paint. Рисование геометрических объектов и оформление рисунков с помощью графического редактора Paint.

    курсовая работа [680,1 K], добавлен 03.12.2008

  • Изучение компьютерной программы – графического редактора Paint, ее возможности и основные приемы работы. Панель инструментов, редактирование рисунка. Составление и реализация школьных уроков в начальной школе по изучению графического редактора Paint.

    курсовая работа [865,0 K], добавлен 28.04.2014

  • Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.

    дипломная работа [676,6 K], добавлен 16.06.2015

  • Создание приложения Windows Forms в среде Microsoft Visual Studio 2008. Разработка программы "Курсовой" для организации работы по учёту курсовых работ в учебных заведениях с возможностью добавления, удаления, редактирования и поиска информации.

    курсовая работа [2,2 M], добавлен 28.06.2011

  • Создание программного обеспечения в среде Visual Basic for Applications для проведения теста по работе полушарий мозга человека. Описание команд. Разработка интерфейса и тестирование программы. Листинг приветствия и задаваемых пользователю вопросов.

    курсовая работа [387,1 K], добавлен 09.03.2014

  • Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.

    курсовая работа [197,5 K], добавлен 19.11.2009

  • Обзор существующего программного обеспечения. Структура и отличительные особенности формата MP3. Сокеты TCP/IP, клиент-сервер. Язык программирования Visual Basic.net в среде разработки Visual Studio 2008. Разработка приложения "MP3_Catalogizator".

    дипломная работа [2,1 M], добавлен 09.02.2015

  • Разработка алгоритма и программы "Расчет стыкового паяного соединения" в среде Microsoft Visual Studio для облегчения расчётов сварных швов. Создание главной формы приложения и его кодирование для расчёта углового шва. Тестирование программы на ошибки.

    курсовая работа [1,5 M], добавлен 06.02.2013

  • Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.

    курсовая работа [2,8 M], добавлен 27.01.2010

  • Разработка графического интерфейса проекта (панель инструментов имеет 6 кнопок). Процедуры разделов программы: документа ThisDocument, программного модуля Module1 и пользовательских форм UserForm1, UserForm2 и Деление_амёбы. Тестирование программы.

    курсовая работа [29,5 K], добавлен 14.12.2010

  • Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.

    дипломная работа [3,2 M], добавлен 30.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.