Вход

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

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

Содержание

Оглавление Введение 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 Содержание

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

Таким образом, 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. Заключение В ходе научной работы были выполнены следующие действия: – определены объект и предмет исследования; – подобрана литература и спланирован отчёт в соответствии с поставленной темой; – проанализирована и структурирована информация; – разработан практический пример. Таким образом, поставленные задачи выполнены, и, соответственно, достигнуты цели, которые были представлены во введении данного отчёта. Из вышеизложенного следует, что тема раскрыта и работа выполнена. Список литературы Комьютерная графика. Википедия. Свободная энциклопедия. [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/Компьютерная_графика (дата обращения: 18.05.2014). Тюкачев Н., Илларионов И., Хлебостроев В. Программирование графики в Delphi. – СПб.: БХВ-Петербург, 2008 г. – 784 с. Работа с графикой в Delphi (GDI). [Электронный ресурс]. URL: http://codingrus.ru/readarticle.php?article_id=1829 (дата обращения: 18.05.2014). Бейкер П., Херн Д.. Компьютерная графика и стандарт OpenGL. – М.: Издательский дом «Вильямс», 2005. – 1168 с. Есенин С. 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 // если нажата кнопка рисования многоугольника nowdrawing:=sPoly else if sbFill.Down then // если нажата кнопка заливки nowdrawing:=sFill; dwn:=true; // устанавливаем флаг нажатой кнопки img.Canvas.Pen.Color:=cbColor.Selected; // устанавливаем цвет карандаша img.Canvas.Brush.Color:=cbFill.Selected; // устанавливаем цвет кисти (заливка) if nowdrawing = sFill then begin // если выбран инструмент заливки img.Canvas.FloodFill(x0,y0,img.Canvas.Pixels[x,y],fsSurface); // заливаем buffer.Assign(img); // копируем в буфер dwn:=false; // отпускаем кнопку end end else begin // во всех остальных случаях if (dwn)and(nowdrawing=sPoly) then begin // если полигон x0:=x; // начальные координаты установлены y0:=y; buffer.Assign(img); // копирование из img в buffer end; end; paintbox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height), img.Canvas,bounds(0,0,img.Width,img.Height)); // копируем рисунок на канву end; procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin // обработчик события перемещения мыши if not dwn then exit; // если клавиша мыши не нажата - выход img.assign(buffer); // копируем картинку из буфера в img case nowdrawing of // проверяем, какой инструмент выбран sPen:begin // карандаш img.Canvas.LineTo(x,y); // рисуем линию buffer.Assign(img); // копируем в буфер end; sRect:begin // если прямоугольник img.Canvas.Rectangle(x0,y0,x,y); // рисуем прямоугольник end; sEllipse:begin img.Canvas.Ellipse(x0,y0,x,y); // эллипс end; sPoly:begin // многоугольник img.Canvas.MoveTo(x0,y0); // перемещаем курсор img.Canvas.LineTo(x,y); // рисуем линию end; sFill:begin //nothing. // если заливка - ничего не делать end; end; paintbox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height), img.Canvas,bounds(0,0,img.Width,img.Height)); // копируем на канву end; procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // обработчик события отпускания клавиши мыши if button=mbLeft then // если клавиша левая dwn:=false; // сбрасываем флаг нажатия клавиши buffer.Assign(img); // копируем в буфер картинку end; procedure TForm1.N4Click(Sender: TObject); begin Close; end; end. 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 с. список литературы
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.0058
© Рефератбанк, 2002 - 2024