Автор: Пользователь скрыл имя, 11 Апреля 2013 в 22:02, курсовая работа
Разработать редактор растровой графики, позволяющий создавать, редактировать, сохранять и открывать графические файлы формата *.bmp. Редактор должен иметь набор простейших графических примитивов, таких как: линия, кривая, прямоугольник, заливка, а также инструменты для частичного удаления (ластик) и выделения части изображения. Должна быть организована работа с буфером обмена (вырезание, копирование, вставка). Также рекомендуется наличие справочных материалов по работе инструментов внутри интерфейса программы.
Аннотация 1
Техническое задание 3
Постановка задачи 4
Введение 5
Создание простого редактора растровой графики 7
Описание программного продукта 12
Заключение 17
Библиографический список 18
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
В Ы С Ш Е Г О П Р О Ф Е С С И О Н А Л Ь Н О Г О ОБ Р А З О В А Н И Я
ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
ПРОВЕРИЛ Ассистент кафедры САиТ __________________ ВИШНЯКОВ Р. "_____"_______________________ |
ВЫПОЛНИЛ Студент группы А-58 __________________ Парахин А.В.
"_____"_____________________ |
КУРСОВАЯ РАБОТА
по дисциплине
«КОМПЬЮТЕРНАЯ ГРАФИКА»
на тему
«Редактор растровой графики»
Данная работа предназначена для демонстрации методов реализации простейших графических примитивов, примеров работы с графическими файлами и буфером обмена, а также, возможно, для использования начинающими пользователями компьютера. В созданном приложении присутствуют инструменты, характерные для всех программных пакетов своего класса: карандаш, линия, прямоугольник, закрашенный прямоугольник, ластик, заливка, определитель цвета, выделение. Также реализована полноценная работа с буфером обмена (вырезание, копирование, вставка). Поддерживаются графические файлы с расширением *.bmp. Приложение представлено в стандартном для Windows-систем виде. Главной особенностью программы является использование простых и понятных методов визуализации всех геометрических фигур.
Оглавление
Разработать редактор растровой графики, позволяющий создавать, редактировать, сохранять и открывать графические файлы формата *.bmp. Редактор должен иметь набор простейших графических примитивов, таких как: линия, кривая, прямоугольник, заливка, а также инструменты для частичного удаления (ластик) и выделения части изображения. Должна быть организована работа с буфером обмена (вырезание, копирование, вставка). Также рекомендуется наличие справочных материалов по работе инструментов внутри интерфейса программы.
Для решения поставленной задачи используется объектно-ориентированный язык программирования C++ Builder 6.0. Для реализации инструментов будут использоваться некоторые встроенные функции языка. В качестве входных данных выступает: вид инструмента, цвет, положение на холсте, что стандартно для всех графических редакторов. Для работы с файлами определен формат *.bmp, как наиболее простой с точки зрения реализации. При создании приложения нет ограничений на использование оперативной памяти, размера программы, дизайна и набора цветов палитры. Для упрощения работы с программой, в нее будет встроена «Справка».
Графический редактор - программа (или пакет программ), позволяющая создавать и редактировать изображения с помощью компьютера.
Компьютерную графику можно разделить на три категории:
Растровое изображение (цифровое изображение) - это файл данных или структура, представляющая прямоугольную сетку пикселей или точек цветов на компьютерном мониторе, бумаге и других отображающих устройствах и материалах. Наименьший элемент растрового изображения называется пиксель (picture element). Изображение состоит из упорядоченной "решетки" (растра) пикселей, находящихся столь близко друг к другу, что глаз не замечает этой "зернистой" структуры.
Растровая графика позволяет создать (воспроизвести) практически любой рисунок, вне зависимости от сложности, в отличие, например, от векторной, где невозможно точно передать эффект перехода от одного цвета к другому. [1]
Растровые графические изображения многоцветных фотографий и иллюстраций получают с помощью сканера и цифровой камеры. Такие изображения имеют обычно большой размер и большую глубину цвета (количества бит на точку). В результате файлы, хранящие растровые изображения, имеют большой объем.
Растровые изображения
очень чувствительны к
Растровые редакторы
являются наилучшим средством обработки
фотографий и рисунков, поскольку
растровые изображения
Растровый и
векторный графические
Кнопки для
рисования графических
Процедуры рисования
графических примитивов в растровом
и векторном редакторах практически
одинаковы, однако существенно различаются
результаты рисования. В растровом
графическом редакторе
Принципы построения интерфейса
В связи с выбранной средой разработки принципы работы интерфейса обладают следующими особенностями:
Принципы построения графических примитивов
// Обработчик MouseDown
Image3->Canvas->MoveTo(X,Y);
if (Button==mbLeft)
Image3->Canvas->Pen->Color = Image1->Canvas->Brush->Color;
else Image3->Canvas->Pen->Color = Image2->Canvas->Brush->Color;
//Обработчик MouseMove
Image3->Canvas->LineTo(X,Y);
Листинг 1. Инструмент «Карандаш»
// Обработчик MouseDown
{
X1 = X;
Y1 = Y;
Image3->Canvas->Pen->Mode = pmNotXor;
if (Button==mbLeft)
Image3->Canvas->Pen->Color = Image1->Canvas->Brush->Color;
else Image3->Canvas->Pen->Color = Image2->Canvas->Brush->Color;
}
/ /Обработчик MouseMove
{
// стирание старой линии
Image3->Canvas->MoveTo(X0,Y0);
Image3->Canvas->LineTo(X1,Y1);
// рисование новой линии
Image3->Canvas->MoveTo(X0,Y0);
Image3->Canvas->LineTo(X,Y);
// запоминание новых координат конца линии
X1 = X;
Y1 = Y;
}
//Обработчик MouseUp
{
Image3->Canvas->MoveTo(X0,Y0);
Image3->Canvas->LineTo(X1,Y1);
Image3->Canvas->Pen->Mode = pmCopy;
Image3->Canvas->MoveTo(X0,Y0);
Image3->Canvas->LineTo(X,Y);}
Листинг 2. Инструмент «Линия»
// Обработчик MouseDown
if (REnd)
// стирание прежней рамки
{
Image3->Canvas->DrawFocusRect(
if ((X < R.Right) && (X > R.Left) && (Y > R.Top) && (Y < R.Bottom))
// начало перетаскивания фрагмента
{
// установка флагов
RDrag = true;
REnd = false;
// запоминание начального положения фрагмента
R0 = R;
// запоминание изображения
BitMap->Assign(Image3->
// цвет кисти
Image3->Canvas->Brush->Color = clWhite;
// недоступность пунктов меню
ImCopy->Enabled = false;
ImCut->Enabled = false;
}
}
else
// начало рисования рамки фрагмента
{
RBegin = true;
REnd = false;
R.Top = X;
R.Bottom = X;
R.Left = Y;
R.Right = Y;
Image3->Canvas->DrawFocusRect(
}
//Обработчик MouseMove
if (RBegin)
{
// Рисование рамки фрагмента
Image3->Canvas->DrawFocusRect(
if (X0 < X) { R.Left = X0; R.Right = X; }
else { R.Left = X; R.Right = X0; }
if (Y0 < Y) { R.Top = Y0; R.Bottom = Y; }
else { R.Top = Y; R.Bottom = Y0; }
Image3->Canvas->DrawFocusRect(
}
// Перетаскивание фрагмента
else if (PSelect->Down)
{
// восстановление изображения под перетаскиваемым фрагментом
Image3->Canvas->CopyRect(R,
// если не нажата клавиша Ctrl - стирание изображения в R0
if (! Shift.Contains(ssCtrl))
Image3->Canvas->FillRect(R0);