Вход

Создание графических приложений

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 283444
Дата создания 06 октября 2014
Страниц 22
Мы сможем обработать ваш заказ (!) 27 декабря в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 600руб.
КУПИТЬ

Описание

Заключение
В ходе научной работы были выполнены следующие действия:
– определены объект и предмет исследования;
– подобрана литература и спланирован отчёт в соответствии с поставленной темой;
– проанализирована и структурирована информация;
– разработан практический пример.
Таким образом, поставленные задачи выполнены, и, соответственно, достигнуты цели, которые были представлены во введении данного отчёта.
Из вышеизложенного следует, что тема раскрыта и работа выполнена.

...

Содержание

Оглавление
Введение 2
1. Основные понятия компьютерной графики. 3
1.1. Типы графических объектов. 3
1.2. Цветовые модели. 5
2. Основы компьютерной графики в Delphi. 6
2.1. Классы графических объектов TGraphicsObject. 7
2.1.1. Класс TFont. 7
2.1.3 TBrush 8
2.2. Класс TCanvas. 9
3. Технологии OpenGl и DirectX 10
3.1. Рисование в Delphi с применением OpenGl. 10
3.1.1. Delphi и OpenGl 11
3.1. Описание DirectX. 12
3.1.1. Базовый слой DirectX 12
3.1.2. HAL и HEL 13
3.1.3. Компоненты DirectX 13
4. Разработка простейшего графического редактора 16
4.1. Проектирование формы 16
4.2 Программирование редактора 17
Заключение 20
Список литературы 21
Приложение 1 – Листинг программы 22

Введение

Введение
В соответствии с темой курсовой работы, объектом исследования выступает среда программирования Delphi и, соответственно, язык программирования Object Pascal, а предметом исследования являются средства, способы и методы разработки графических приложений.
Целью курсовой работы является:
– расширение, закрепление и систематизация теоретических знаний по программированию, связанных с разработкой графических приложений;
– формирование и совершенствование практических навыков применения простейших функций, компонентов и алгоритмов построения графических объектов;
– формирование навыков ведения самостоятельных теоретических и практических исследований в области программирования компьютерной графики;
– приобретение опыта обработки, анализа и систематизации результатов, практической зн ачимости и возможной области применения.
Таким образом, в рамках исследования нужно решить следующие задачи:
– расширения и закрепления навыков работы с научной, методической, справочной и технической литературой;
– формирования и закрепления навыков оформления курсовой работы;
– формирования и закрепления навыков научного оформления и изложения информации.
Для решения вышепоставленных задач требуется применить теоретические и экспериментальные методы: анализ данных, построение модели, эксперимент.

Фрагмент работы для ознакомления

4. Разработка простейшего графического редактора
Для решения задачи курсовой работы требуется практическая реализация теоретического материала, описанного в первых главах. В связи с этим требуется разработать простейший графический редактор, позволяющий работать с графическими примитивами и реализующий основные функции среды Delphi, описанные в первых главах.
4.1. Проектирование формы
Основным элементом на форме будет, картинка. Есть несколько вариантов компонентов для неё. Это любой элемент со свойством Canvas.
Для решения текущей задачи будет применяться PaintBox.
Так же, нужно учесть размещение панели инструментов (в данном случае в нижней части формы), для чего будет использоваться компонент Panel, кнопки SpeedButton, компоненты ColorBox (для выбора цвета) и Label (для подписи компонентов ColorBox).
Таким образом, нужно выполнить действия в следующей последовательности.
1. Установить Panel, со свойствами Align=alBottom, Height=65.
2. На панель установить 5 кнопок SpeedButton. У всех свойство GroupIndex должно быть равно 1 (чтобы они находились в одной группе кнопок и нельзя было нажать две одновременно). Одной из кнопок нужно назначить свойство Down равное True (нажата).
3. Поставить на Panel два элемента ColorBox и в свойстве Style установить cbPrettyNames=True. Второму элементу присвоить Selected=clWhite.
4. Подписать их «Цвет» и «Фон», соответственно, с помощью Label.
6. Установить на форму PaintBox со свойствами Top=0 и Left=0, Align=alClient.
7. Добавить меню (компонент MainMenu), сделать в нём 1 элемент – «Файл» с пунктом: Выход.
В результате должна получиться форма, скриншот которой представлен на рис. 2.
Рисунок 2 – Главная форма графического редактора
4.2 Программирование редактора
Для рисования будет применён не PaintBox, а буфер в памяти, с которым будет обмениваться компонент. Таким образом, PaintBox будет получать лишь нарисованный результат.
Для этого необходимо объявить глобальные переменные:
img, buffer: TBitmap;
x0,y0: integer;
Далее, нужно объявить переменную dwn: boolean, которая будет информировать о том, нажата левая кнопка или нет (рисовать или нет).
Для упрощения работы, можно объявить тип TShape = (sPen, sRect, sEllipse, sPoly, sFill), содержащий все возможные формы рисования (карандаш, прямоугольник, эллипс, многоугольник и заливка).
Так же требуется объявить глобальную переменную nowdrawing: TShape. В ней будет хранится тип фигуры, для рисования.
В событии формы OnCreate необходимо инициализировать объекты, задав начальные значения всем переменным. По-умолчанию, форма рисования устанавливается как карандаш, кнопка dwn отжата. Так же здесь инициализируются объекты img и buffer и задаются их размеры в соответствии с размерами PaintBox.
В событии OnMouseDown элемента PaintBox нужно проверить, нажата ли левая кнопка и, если это так, требуется установить значение nowdrawing, а также сохранить текущую картинку и начальные координаты мыши.
Нужно так же учесть, что если выбран инструмент «Заливка», то движения мыши учитывать не нужно, а требуется только одно нажатие. Поэтому флаг dwn в случае заливки надо снять, чтобы не реагировать на движения.
При рисовании ломаной линии должна быть реализована реакция и на правую кнопку: для создания нового узла. Таким образом, для рисования ломанной нужно держать левую кнопку нажатой, и нажимать на правую для создания узлов.
Так же следует переписать начальные координаты (x0, y0), если левая кнопка не нажата.
В событии OnMouseMove (движение мыши) компонента PaintBox нужно проверять состояние флага dwn (мышь нажата). Если он не включён, то следует завершить обработку события.
В противном случае нужно восстановить старый холст и по выбору рисуемой фигуры в nowdrawing, соответственно, нарисовать линию, прямоугольник, эллипс или отрезок (часть ломаной) на картинке img. В конце рисования, нужно перенести его на холст компонента PaintBox.
В событии OnMouseUp (отпускания клавиши мыши) нужно сбросить флаг dwn, если нажата левая клавиша мыши.
И, в заключение, в событии OnPaint компонента PaintBox нужно добавить прорисовку картинки из буфера.
Листинг программы приведён в приложении 1.
Заключение
В ходе научной работы были выполнены следующие действия:
– определены объект и предмет исследования;
– подобрана литература и спланирован отчёт в соответствии с поставленной темой;
– проанализирована и структурирована информация;
– разработан практический пример.
Таким образом, поставленные задачи выполнены, и, соответственно, достигнуты цели, которые были представлены во введении данного отчёта.
Из вышеизложенного следует, что тема раскрыта и работа выполнена.
Список литературы
1. Комьютерная графика. Википедия. Свободная энциклопедия. [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/Компьютерная_графика (дата обращения: 18.05.2014).
2. Тюкачев Н., Илларионов И., Хлебостроев В. Программирование графики в Delphi. – СПб.: БХВ-Петербург, 2008 г. – 784 с.
3. Работа с графикой в Delphi (GDI). [Электронный ресурс]. URL: http://codingrus.ru/readarticle.php?article_id=1829 (дата обращения: 18.05.2014).
4. Бейкер П., Херн Д.. Компьютерная графика и стандарт OpenGL. – М.: Издательский дом «Вильямс», 2005. – 1168 с.
5. Есенин С. DirectX и Delphi. Разработка графических и мультимедийных приложений – СПб: БХВ-Петербург, 2006. – 512 с.
Приложение 1 – Листинг программы
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, Menus;
type
TShape = (sPen, sRect, sEllipse, sPoly, sFill); // перечисление типов фигуры, которые можно нарисовать
var
nowdrawing: TShape; // тип фигуры, которая рисуется
img, buffer: TBitmap; // создаваемый рисунок и буфер
x0,y0: integer; // начальные координаты
dwn: boolean; // для проверки, нажата ли клавиша мыши (для рисования)
type
TForm1 = class(TForm) // визуальные компоненты
Panel1: TPanel;
sbPen: TSpeedButton;
sbRectangle: TSpeedButton;
sbEllipse: TSpeedButton;
sbPoly: TSpeedButton;
sbFill: TSpeedButton;
cbColor: TColorBox;
cbFill: TColorBox;
Label1: TLabel;
Label2: TLabel;
ScrollBox1: TScrollBox;
PaintBox1: TPaintBox;
MainMenu1: TMainMenu;
N1: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin // инициализация переменных
Img:=TBitmap.Create; // создание переменной для хранения картинки
buffer:=TBitmap.Create; // и буфера
img.Width:=PaintBox1.ClientWidth; // размеры картинки
buffer.Width:=PaintBox1.ClientWidth; // и буфера
img.Height:=PaintBox1.ClientHeight; // приравниваются
buffer.Height:=PaintBox1.ClientHeight; // к размерам PaintBox
nowdrawing:=sPen; // Выбранный инструмент - карандаш
dwn:=false; // кнопка мыши не нажата
end;
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// обработчик события нажатия кнопки на компоненте PaintBox
if button=mbLeft then begin // если нажата левая клавиша мыши
img.assign(buffer); // инициализация img. привязка его к bufrer
x0:=X; y0:=Y; // установка начальных значений
if sbPen.Down then begin // если нажата кнопка рисования карандашом
nowdrawing:=sPen; // устанавливаем инструмент рисования карандаш
img.canvas.MoveTo(x,y); // перемещаемся x,y
end
else
if sbEllipse.Down then // если нажата кнопка рисования эллипса
nowdrawing:=sEllipse
else
if sbRectangle.Down then // если нажата кнопка рисования прямоугольника
nowdrawing:=sRect
else
if sbPoly.Down then // если нажата кнопка рисования многоугольника

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

Список литературы
1. Комьютерная графика. Википедия. Свободная энциклопедия. [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/Компьютерная_графика (дата обращения: 18.05.2014).
2. Тюкачев Н., Илларионов И., Хлебостроев В. Программирование графики в Delphi. – СПб.: БХВ-Петербург, 2008 г. – 784 с.
3. Работа с графикой в Delphi (GDI). [Электронный ресурс]. URL: http://codingrus.ru/readarticle.php?article_id=1829 (дата обращения: 18.05.2014).
4. Бейкер П., Херн Д.. Компьютерная графика и стандарт OpenGL. – М.: Издательский дом «Вильямс», 2005. – 1168 с.
5. Есенин С. DirectX и Delphi. Разработка графических и мультимедийных приложений – СПб: БХВ-Петербург, 2006. – 512 с.


Очень похожие работы
Найти ещё больше
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00354
© Рефератбанк, 2002 - 2024