Цель курсового проекта: получение навыков по разработке программы на языке 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 – это основа, в который должен разбираться
Графические возможности Microsoft Word
... инструментов Рисование . В документ Word можно импортировать графику самых различных форматов. Встраивание сопровождается их конвертированием в привычные для него форматы. Этот процесс называют импортом Word "понимает" большинство распространенных и стандартизованных графических ...
Часто бывает проще написать
Для обработки изображений на компьютере используются специальные программы — графические редакторы. Графический редактор — это программа создания, редактирования и просмотра графических изображений.
Изображения в графических редакторах хранятся по-разному.
Растровое изображение хранится с помощью точек различного цвета (пикселей), которые образуют строки и столбцы. Любой пиксель имеет фиксированное положение и цвет. Хранение каждого пикселя требует некоторого количества бит информации, которое зависит от количества цветов в изображении.
Векторные изображения формируются из объектов (точка, линия, окружность и т. д.), которые хранятся в памяти компьютера в виде графических примитивов и описывающих их математических формул.
Например, графический примитив точка задается своими координатами (X, У), линия — координатами начала (XI, Y1) и конца (Х2, Y2), окружность — координатами центра (X, У) и радиусом (R), прямоугольник — величиной сторон и координатами левого верхнего угла (XI, У1) и правого нижнего угла (Х2, У2) и т. д. Для каждого примитива назначается также цвет.
Как следствие, графические редакторы подразделяются на две категории: растровые и векторные. Они отличаются по способу, которым представляют графическую информацию.
Векторные графические редакторы
Векторные графические изображения являются оптимальным средством для хранения высокоточных графических объектов (чертежи, схемы и т. д.), для которых имеет значение наличие четких и ясных контуров. С векторной графикой вы сталкиваетесь, когда работаете с системами компьютерного черчения и автоматизированного проектирования, с программами обработки трехмерной графики. Все компоненты векторного изображения описываются математически, а значит — абсолютно точно. Векторные изображения, как правило, строятся вручную, однако в некоторых случаях они могут быть также получены из растровых с помощью программ трассировки. Векторные изображения не в состоянии обеспечить близкую к оригиналу реалистичность, но достоинством векторной графики является то, что файлы, хранящие векторные графические изображения, имеют сравнительно небольшой объем. Важно также, что векторные графические изображения могут быть увеличены или уменьшены без потери качества.
Растровые графические редакторы
Растровые графические редакторы являются наилучшим средством обработки фотографий и рисунков, поскольку растровые изображения обеспечивают высокую точность передачи градаций цветов и полутонов. Способ представления растровых изображений совершенно отличен от векторных. Растровые изображения состоят из отдельных точек, называемых растром. Такое представление изображений существует не только в цифровом виде. Растровые изображения обеспечивают максимальную реалистичность, поскольку в цифровую форму переводится каждый мельчайший фрагмент оригинала. Такие изображения сохраняются в файлах гораздо большего объёма, чем векторные, поскольку в них запоминается информация о каждом пикселе изображения. Таким образом, качество растровых изображений зависит от их размера (числа пикселей по горизонтали и вертикали) и количества цветов, которые могут принимать пиксели. Как следствие того, что они состоят из пикселей фиксированного размера, свободное масштабирование без потери качества к ним не применимо. Эта особенность, а также сама структура растровых изображений несколько затрудняет их редактирование и обработку.
Векторизация и растеризация изображений методы сжатия графических данных
... (с использованием описания языка PostScript), конвертировать векторные контуры в точечные изображения и передавать их в соответствующие программы. Технология «drag-and-drop» Технология «drag-and-drop» («перенести и бросить» — «буксировка») ... способы сжатия подробнее. Архивация, или сжатие графических данных, возможно как для растровой, так и для векторной графики. При этом способе уменьшения данных, ...
Но кроме создания изображений графические
Структура – это набор из одной или более переменных, возможно различных типов, сгруппированных под одним именем для удобства обработки. (В некоторых языках, самый известный из которых паскаль, структуры называются “записями”).
Структуры оказываются полезными при организации сложных данных особенно в больших программах, поскольку во многих ситуациях они позволяют сгруппировать связанные данные таким образом, что с ними можно обращаться, как с одним целым, а не как с отдельными объектами.
Массив – один из структурированных типов данных. Характеризуется тем, что все его элементы имеют один и тот же тип. При определении массива следует указать его имя и количество элементов. В некоторых случаях допустимо описание без указания количества элементов. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером.
Указатель – это переменная, содержащая адрес другой переменой. Значениями указателей служат адреса участков памяти, выделенных для объектов конкретных типов. Именно поэтому в определении и описании указателя всегда присутствует обозначение соответствующего ему типа. Эта информация позволяет в последующем с помощью указателя получить доступ ко всему сохраняемому объекту в целом.
Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы. Для работы с динамической памятью используют указатели. С их помощью осуществляется доступ к участкам динамической памяти, которые называются динамическими переменными. Динамические переменные создаются с помощью специальных функций и операций. Они существуют либо до конца работы программ, либо до тех пор, пока не будут уничтожены с помощью специальных функций или операций. Для создания динамических переменных используют операцию new, определенную в C++; Для удаления динамических переменных используется операция delete, определенная в C++. Размера сегмента данных может быть недостаточно для размещения больших массивов информации. Выходом из этой ситуации является использование динамической памяти.
Язык С, как и другие языки программирования высокого уровня, позволяет осуществлять операции файлового ввода и вывода. Основной алгоритм обработки файлов выполняется в три действия в
- открытие файла;
- чтение и/или запись данных в файл;
- закрытие файла.
В языке С все файлы делятся на два вида:
Разработка программы с помощью языка программирования Delphi
... курсового проекта. 2) Разработка обработчиков событий от элементов экранных форм, разработка алгоритмов и программных кодов действий обработки текстового файла согласно заданию. 3) Подготовка тестовых исходных данных и отладка программы. ... скрывая основную часть программы, которая создается автоматически самой разработкой. Для выполнения данной курсовой работы необходимо разработать алгоритм ...
- бинарные;
- текстовые.
Бинарный файл — файл, содержащий структурированную или не структурированную информацию, представленную в двоичном (бинарном) виде.
Текстовый файл — файл, содержащий структурированную или не структурированную информацию, представленную в текстовом (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 CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) – главная функция программы.
Функция осуществляет обработку пунктов меню и реализует большинство инструментов рисования(выбор толщины кисти, инструмент выбора цвета кисти, инструменты «Кисть», «Прямоугольник», «Окружность», «Прямая» и инструмент заливки).
В главную функцию передаются некоторые параметры, она не возвращает значений.
Разработка программы ‘Текстовый редактор’
... и редактирование текста; программа должна выполнять все функции за конечное количество времени. 2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ, .1 Основание для разработки Углубление знаний в C#. Создание текстового редактора, работа с текстом. 2.2 ...