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

Автор работы: Пользователь скрыл имя, 09 Января 2013 в 09:11, курсовая работа

Описание

Цель курсового проекта: получение навыков по разработке программы на языке C\C++ , с использованием WinAPI, для реализации пользовательского интерфейса, а также реализация простенького графического редактора.
Программный продукт написан на языке программирования С++. Реализация темы курсовой работ

Содержание

Введение 4
1. Анализ задания и постановка задач 5
2. Теоретическая часть 6
3. Проектирование программы 11
4. Реализация программы 12
5. Тестирование программы 14
Заключение 21
Литература 22

Работа состоит из  1 файл

ПЗ СПО.doc

— 1.06 Мб (Скачать документ)


Содержание


 

Введение

Цель курсового проекта: получение навыков по разработке программы на языке C\C++ , с использованием WinAPI, для реализации пользовательского интерфейса, а также реализация простенького графического редактора.

Программный продукт написан на языке программирования С++. Реализация темы курсовой работы выполняется с  среде Visual С++ с использованием WinAPI.

Системные требования для использования  программы:

  • Операционная система MS-DOS, Windows 98/2000/xp/Vista/7;
  • Процессор от Intel Pentium I и выше;
  • 32 MB RAM(ОЗУ) и выше;
  • HDD(Дисковая память) 20 MB;

 

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

  • Intel Core-Duo, 2800 MHz, 2 GВ
  • Nvidia Geforce 8600GT, 80 GB HDD;
  • Операционная система Microsoft Windows 7.

 

 

1. Анализ задания и постановка задач

Курсовая работа представляет собой создание простейшего графического редактора.

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

Программа должна осуществлять:

  • Рисование с помощью графического инструмента «Кисть»;
  • Рисование с помощью графического инструмента «Прямоугольник»;
  • Рисование с помощью графического инструмента «Окружность»;
  • Рисование с помощью графического инструмента «Распылитель»;
  • Рисование с помощью графического инструмента «Прямая»;
  • Рисование с помощью графического инструмента «Заливка»;
  • Создание и изменение графических файлов.

 

2. Теоретическая часть

Windows API (application programming interfaces) – общее наименование целого набора базовых функций интерфейсов, программирования приложений операционных систем семейств Windows и Windows NT корпорации «Майкрософт». Является самым прямым способом взаимодействия приложений с Windows.

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

WinAPI – это основа, в  который должен разбираться любой  программист, пишущий под Windows, независимо от того, использует  ли он библиотеки вроде MFC (Microsoft Visual C++) или VCL (Borland Delphi / C++ Builder). Часто  бывает проще написать простенькую  программу, состоящую из одного файла, чем настраивать относительно сложный проект, созданный визардами. К тому же у них не возникает проблем совместимости, если у конечного пользователя не хватает каких-то библиотек, чем иногда грешит MFC.

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

Изображения в графических  редакторах хранятся по-разному.

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

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

Например, графический  примитив точка задается своими координатами (X, У), линия - координатами начала (XI, Y1) и конца (Х2, Y2), окружность - координатами центра (X, У) и радиусом (R), прямоугольник - величиной сторон и координатами левого верхнего угла (XI, У1) и правого нижнего угла (Х2, У2) и т. д. Для каждого примитива назначается также цвет.

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

 

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

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

 

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

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

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

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

Массив –  один из структурированных  типов данных. Характеризуется тем, что все его элементы имеют один и тот же тип. При определении массива следует указать его имя и количество элементов. В некоторых случаях допустимо описание без указания количества элементов. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером.

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

Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы. Для работы с динамической памятью используют указатели. С их помощью осуществляется доступ к участкам динамической памяти, которые называются динамическими переменными.  Динамические переменные создаются с помощью специальных функций и операций. Они существуют либо до конца работы программ, либо до тех пор, пока не будут уничтожены с помощью специальных функций или операций. Для создания динамических переменных используют операцию new, определенную в C++; Для удаления динамических переменных используется операция delete, определенная в C++.  Размера сегмента данных может быть недостаточно для размещения больших массивов информации. Выходом из этой ситуации является использование динамической памяти.

Язык С, как и другие языки программирования высокого уровня, позволяет осуществлять операции файлового  ввода и вывода. Основной алгоритм обработки файлов выполняется в три действия в следующем порядке:

  • открытие файла;
  • чтение и/или запись данных в файл;
  • закрытие файла.

В языке С все файлы  делятся на два вида:

  • бинарные;
  • текстовые.

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

Текстовый файл - файл, содержащий структурированную или не структурированную  информацию, представленную в текстовом (ASCII символы) виде.

Операции чтения и  записи для текстовых и бинарных файлов отличаются друг от друга (в языке С реализованы в виде различных функций). В языке С для работы с файлами набор функций реализован в библиотеке stdio.h.

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

Интерфейс функции - заголовок  функции, в котором указывается  название функции, список ее параметров и тип возвращаемого значения.

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

 

3. Проектирование программы

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

В программе выделяется один программный модуль Main.cpp, который является главным модулем программы и содержит реализации процедур работы с графикой.

 

Функции модуля TextEditor.cpp:

  • void Spray(int iDens) – обработчик инструмента «Распылитель»;
  • void ClearChecks() – обнуление выбора;
  • void ZeroMem(char* ptr, int len) – обнуление памяти;
  • bool OpenSaveDlg(bool bSave, HWND hDlg) – диалог сохранения файла;
  • void UpdateMenuBmp(HBITMAP bmp, COLORREF clr) – обновление области рисования;
  • BOOL CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) – функция обработки пунктов меню и инструментов рисования;
  • int __stdcall WMain() – инициализация главного окна программы;
  • int __stdcall WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd ) – функция вызова главного окна программы.

 

4. Реализация программы

В модуле Main.cpp реализуются функции инициализации программы и главная функция программы:

В программе объявляются переменные:

    • bool bDraw – признак рисования;
    • int x, y, x2, y2, x3, y3 – координаты для листа и инструментов рисования;
    • HBITMAP bmpBack, bmpUndo, bmpRedo, bmpForeMenu, bmpBackMenu – инструменты отмены действий, возврата;
    • HDC dcBack, dcMenuBmp, dcUndo, dcRedo, dcItemPaint – переменные меню, отмены действий;
    • HPEN pen – переменная инструмента «карандаш»;
    • HBRUSH brush – переменная инструмента «Кисть»;
    • wchar_t cBuf[1024] – буфер;
    • OPENFILENAMEW ofn  – структура OPENFILENAME, используется при вызове окон "Открыть" и "Сохранить как...".

 

BOOL CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) – главная функция программы.

Функция осуществляет обработку пунктов меню и реализует большинство инструментов рисования(выбор толщины кисти, инструмент выбора цвета кисти, инструменты «Кисть», «Прямоугольник», «Окружность», «Прямая» и инструмент заливки).

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

Информация о работе Простой графический редактор