Графический редактор

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    126,13 Кб
  • Опубликовано:
    2016-01-24
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Графический редактор















Пояснительная записка к курсовой работе

Графический редактор

Содержание

Введение

. Анализ технического задания

. Выбор метода решения задачи

. Проектирование функциональных частей

. Разработка программы

. Тестирование и анализ результатов

Заключение

Список литературы

Введение

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

Целью данного проекта является создание простого графического редактора. Для реализации проекта воспользуемся языком программирования C++.++ - компилируемый статически типизированный язык программирования общего назначения.

Поддерживает такие парадигмы программирования как процедурное программирование, модульность, раздельная компиляция, обработка исключений, абстракция данных, типы (объекты), виртуальные функции, объектно-ориентированное программирование, обобщенное программирование, контейнеры и алгоритмы, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником - языком C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название "C++" происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.

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

Существует несколько реализаций языка C++ - как бесплатных, так и коммерческих. Наиболее популярны проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

1. Анализ технического задания

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

При запуске программы появится окно (размер рабочей области фиксирован), в панели инструментов будут такие инструменты как "Эллипс", "Квадрат", "Прямая", "Карандаш", "Выбор цвета". Так же в программе будет меню и строка состояния.

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

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

2. Выбор метода решения задачи


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

После запуска приложения появляется окно фиксированного размера.

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

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

В нижней части программы будет находиться строка состояния. Она будет улавливать действия пользователя в программе, и выводить текст с выполненным действием (Например, "Нарисован прямоугольник").

3. Проектирование функциональных частей


Для правильной разработки программы поделим её на 4 части. Каждая из них будет выполнять свои функции.

Первая часть. Создание главного окна с меню фиксированного размера и строкой состояния.

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

В нижней части окна будет строка состояния. Когда пользователь совершит некоторое действие в программе, это будет описано в строке состояния

Вторая часть. Создаём панель инструментов .

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

После этого описываем каждую кнопку панели, привязываем ей функцию рисования, рисунок кнопки (в данной программе все кнопки будут без изображений, т.е. мы будем передавать значение NULL), а также другие параметры. Т.к. кнопок у нас будет 5, описываем массив из 7 элементов (сделаем 1 отступ для кнопки "Выбор цвета", а первая кнопка является "малым промежутком"").

К Первым четырём кнопкам будут привязаны функции рисования различных фигур, пятая кнопка будет отведена для выбора цвета рисования.

Третяя часть. Рисование фигур.

При выборе инструмента "Карандаш", мы будем закрашивать левой клавишей мыши пиксели рабочей области в любом направлении.

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

Поэтому же способу будут работать инструменты "Прямоугольник" и "Прямая линия".

Четвёртая часть. Загрузка файла формата BMP.

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

Поддерживаемый формат открытия картинки - BMP.

После выбора файла, он отображается в рабочей области программы.

4. Разработка программы


Данная программа будет Win32 API-приложением и будет написано на языке C++.

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

При запуске программы фиксируем наше окно в разрешение 800х600 пикселей:

height=600+GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYBORDER);

width=800+GetSystemMetrics(SM_CXBORDER)*2;

Далее пользователь может выбрать один из инструментов рисования.

Инструмент "Прямая линия" рисует ровные линии растягиванием по координатам.

Пример:

hNewPen=CreatePen(PS_SOLID, 10, rgbCurrent);(hdc, hNewPen);(hdc, X1, Y1, NULL);(hdc, X2, Y2);

Инструмент "Прямоугольник". Рисуется растягиванием по координатам:

case CM_DRAW_RECTTANGLE:=TRUE;=Line=Ellips=FALSE;

…_PAINT: …(hdc, X1, Y1, X2, Y2);

Инструмент "Эллипс" :

case CM_DRAW_ELLIPSE:=TRUE;=Line=Recttangle=FALSE;_PAINT:

Ellipse(hdc, X1, Y1, X2, Y2);

Выбор цвета: для создания окна выбора цвета, изначально объявим идентификатор панели выбора цвета:

#defineCOLOR1009

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

COLOR:(&cc, sizeof(CHOOSECOLOR));.lStructSize = sizeof(CHOOSECOLOR);.hwndOwner = hWnd;.lpCustColors = (LPDWORD) acrCustClr;.rgbResult = rgbCurrent;.Flags = CC_FULLOPEN | CC_RGBINIT;(ChooseColor(&cc)==TRUE)

{= CreateSolidBrush(cc.rgbResult);= cc.rgbResult;

}

После выбора пользователем цвета, значение цвета передаётся в rgbCurrent. Это значение будем передавать другим фигурам для того, чтобы выбранный цвет применился к ним. Пример:

=CreatePen(PS_SOLID, 10, rgbCurrent);

Закрашивание фигур "Прямоугольник" и "Эллипс" будет осуществлять выбором цвета из второго меню "Цвет закраски". Создадим новые переменные HBRUSH hNewBrush и int bR=255, bG=255, bB=255, которые понадобятся нам для того, чтобы передавать значения цвета в Brush (закраску). Далее разрабатываем стандартный набор цветов и привязываем их к пунктам меню "Цвет закраски". Пример одного цвета:

CM_MENU_BRUSH_RED:bR=255; bG=0; bB=0; break;

Так же стоит описать метод открытия картинки в формате .BMP. Т.к. в данном курсовом проекте эта функция является одной из самых важных, опишу её подробнее. Метод открытия опишем в отдельной функции GetFileName(). Для начала заполняем данные и вызываем диалог открытия файла:


Имя файла будет храниться в переменной szFileName

Т.к. мы хотим открыть файл формата .BMP , будем фильтровать все файлы только по этому формату:

.lpstrFilter = ("выберите файл .bmp\0*.bmp\0\0");

На этом функция открытия файла заканчивается. Далее создадим функцию самого вывода картинки(нарисуем её на экране).

Функция:

(HDC hdc, int x, int y, HBITMAP hBitmap).

Создаём контекст памяти , совместимый с контекстом отображения:

= CreateCompatibleDC(hdc);

Потом выбираем изображение bitmap в контекст памяти:

= (HBITMAP)SelectObject(hMemDC, hBitmap);

Для контекста памяти устанавливаем тот же режим отображения, что используется в контексте отображения:

(hMemDC, GetMapMode(hdc));

Определяем размеры изображения(hBitmap, sizeof(BITMAP), (LPSTR) &bm);.x = bm.bmWidth;.y = bm.bmHeight;

Преобразуем координаты устройства в логические для устройства вывода

(hdc, &ptSize, 1);.x = 0;.y = 0;

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

(hMemDC, &ptOrg, 1);

Рисуем изображение bitmap

(hdc, x, y, ptSize.x, ptSize.y,, ptOrg.x, ptOrg.y, SRCCOPY);

Восстанавливаем контекст памяти

(hMemDC, hOldbm);

Удаляем контекст памяти

(hMemDC);

 

5. Тестирование и анализ результатов


Ниже приведены результаты выполнения программы.

Результат работы, разработанного приложения:

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

Рис. 1. Запуск программы

Рис. 2. Открытие файла

Рис. 3. Рисование инструментов

Рис. 4. Выбор цвета

Рис. 5. Строка состояния

 

Заключение


В результате проведённой работы была создана программа "Графический редактор" на С++ Win32 Api.

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

пояснительная записка;

текст программы;

руководство оператора (в виде отдельного файла).

Созданная программа проста в обращении и не требует большого количества ресурсов компьютера.

 

Список литературы


1.       Н.А. Литвиненко. "Технология программирования на C++. Win32 API-приложения" 2011;

.         Р. Саймон. "Microsoft Windows API. Справочник системного программиста" 2010;

.         Саймон Р. "Microsoft Windows API. Энциклопедия программиста";

.         Ю. Шупак. "Win32 Api Эффективная разработка приложений";

.         Р. Ганеев. "Проектирование интерфейса пользователя средствами Win32 Api" 2009;

.         П. Румянцев. "Азбука Программирования в Win32 Api" 2013.

Похожие работы на - Графический редактор

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!