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

Общая характеристика возможностей языка программирования C++ Win32 Api. Выбор метода решения задачи по созданию простого графического редактора. Описание проектирования функциональных частей, разработки программы. Тестирование и анализ результатов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 24.01.2016
Размер файла 388,5 K

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

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

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

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

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

Содержание

  • Введение
  • 1. Анализ технического задания
  • 2. Выбор метода решения задачи
  • 3. Проектирование функциональных частей
  • 4. Разработка программы
  • 5. Тестирование и анализ результатов
  • Заключение
  • Список литературы
  • Введение
  • Мир персональных компьютеров прошел большой путь в своем развитии. Уже с момента появления первого персонального компьютера было ясно, что он будет играть важную роль. Первый PC положил начало развитию целого семейства компьютеров. Одновременно с его развитием росло и его значение. Такой успех и значение семейства PC сделали разработку программ для него очень важным делом.
  • Целью данного проекта является создание простого графического редактора. Для реализации проекта воспользуемся языком программирования C++.
  • 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);

SelectObject(hdc, hNewPen);

MoveToEx(hdc, X1, Y1, NULL);

LineTo(hdc, X2, Y2);

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

case CM_DRAW_RECTTANGLE:

Recttangle=TRUE;

Linie=Line=Ellips=FALSE;

caseWM_PAINT: …

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

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

case CM_DRAW_ELLIPSE:

Ellips=TRUE;

Linie=Line=Recttangle=FALSE;

WM_PAINT:

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

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

#defineCOLOR1009

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

case COLOR:

ZeroMemory(&cc, sizeof(CHOOSECOLOR));

cc.lStructSize = sizeof(CHOOSECOLOR);

cc.hwndOwner = hWnd;

cc.lpCustColors = (LPDWORD) acrCustClr;

cc.rgbResult = rgbCurrent;

cc.Flags = CC_FULLOPEN | CC_RGBINIT;

if (ChooseColor(&cc)==TRUE)

{

hbrush = CreateSolidBrush(cc.rgbResult);

rgbCurrent = cc.rgbResult;

}

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

hNewPen=CreatePen(PS_SOLID, 10, rgbCurrent);

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

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

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

char szFileName[1000]={0};

ZeroMemory(&ofn, sizeof(OPENFILENAME));

ofn.lStructSize = sizeof(OPENFILENAME);

ofn.hInstance = hInst;

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

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

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

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

Функция:

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

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

hMemDC = CreateCompatibleDC(hdc);

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

hOldbm = (HBITMAP)SelectObject(hMemDC, hBitmap);

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

SetMapMode(hMemDC, GetMapMode(hdc));

Определяем размеры изображения

GetObject(hBitmap, sizeof(BITMAP), (LPSTR) &bm);

ptSize.x = bm.bmWidth;

ptSize.y = bm.bmHeight;

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

DPtoLP(hdc, &ptSize, 1);

ptOrg.x = 0;

ptOrg.y = 0;

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

DPtoLP(hMemDC, &ptOrg, 1);

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

BitBlt(hdc, x, y, ptSize.x, ptSize.y,

hMemDC, ptOrg.x, ptOrg.y, SRCCOPY);

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

SelectObject(hMemDC, hOldbm);

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

DeleteDC(hMemDC);

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

  • Изучение основных алгоритмов генерации различных видов фракталов. Выбор языка и среды программирования. Характеристика структурных элементов растрового графического редактора фракталов. Описание интерфейса приложения, порядок редактирования изображений.

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

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

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

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

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

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

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

  • Необходимые компоненты и порядок составления текстового редактора. Текст программы решения задачи на языке программирования C++. Контрольный пример работы текстового редактора. Создание и произведение операции форматирования простого документа.

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

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

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

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

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

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

    реферат [62,6 K], добавлен 04.08.2010

  • Характеристика графических возможностей среды программирования Lazarus. Анализ свойств Canvas, Pen, Brush. Сущность методов рисования эллипса и прямоугольника. Возможности компонентов Image и PaintBox. Реализации программы "Графический редактор".

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

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