Программа, иллюстрирующая работу с графикой в Delphi на примере рисования ломаных и кривых линий

 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ










КУРСОВАЯ РАБОТА

по дисциплине "программирование"

Тема: "Программа, иллюстрирующая работу с графикой в Delphi на примере рисования ломаных и кривых линий"




Выполнила:

студентка 2 курса, 2 группы

специальности "СИЯ" Ярмолович Татьяна Юрьевна

Руководитель:

доцент кафедры Информационных технологий

Серебрякова Людмила Михайловна




Минск 2014

Оглавление


Введение

Глава 1. Графика в Delphi

1.1 Создания приложения. Класс TCanavas. Его основные свойства и методы

1.2 Объекты TBrush, TFont и TPen

Глава 2. Пример программы

Заключение

Литература

Приложение


Введение


Данная работа посвящена теме "Программа, иллюстрирующая работу с графикой в Delphi на примере рисования ломаных и кривых линий". Необходимость широкого использования графических программных средств стала особенно ощутимой в связи с развитием Интернета и, в первую очередь, благодаря службе World Wide Web, связавшей в единую "паутину" миллионы "домашних страниц". У страницы, оформленной без компьютерной графики мало шансов привлечь к себе массовое внимание.

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

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

§TCanаvas - поверхность рисования,

§TPen - перо,

§TBrush - кисть,

§TFont - шрифт.

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


Глава 1. Графика в Delphi


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

В работе с графикой в Delphi, у вас в распоряжении находится канва (холст, а точнее свойство Canvas Delphi компонентов), кисть (свойство Brush), карандаш (свойство Pen) компонента на которым мы собираемся рисовать. У Pen и Brush есть свойство Color (цвет) и Style (стиль). Чтоб получить доступ к шрифтам, предоставлено свойство холста (Canvas) Font.

Холст для рисования Canvas представляет собой перевернутую систему координат XOY, где О - верхняя левая точка компонента или формы (смотря где мы рисуем).



Хорошая новость состоит в том, что Delphi имеет целый ряд готовых к использованию компонент, заботиться о рисовании которых разработчику совершенно незачем, поскольку всю рутинную работу уже выполнили разработчики Delphi и VCL. Более того, в VCL есть множество "заготовок", на основании которых можно создавать собственные компоненты, опять-таки без непосредственного обращения к функциям графического вывода.

В то же время, рисование может быть полезным и при более простых ситуациях, например, когда требуется именно вывести какие-либо графические примитивы, или даже дать пользователю возможность что-нибудь начертить. Наконец, мы рассмотрим здесь вопрос рисования, чтобы еще раз проиллюстрировать работу классов и использование ООП, а заодно исследовать еще один фрагмент VCL.


1.1 Создания приложения. Класс TCanavas. Его основные свойства и методы


Как было сказано ранее, поверхности, на которую программа может выводить графику, соответствует свойство Canvas. В свою очередь, свойство canvas - это объект типа TCanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т.д.), а свойства позволяют задать характеристики выводимых графических примитивов: цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации.

Основное свойство такого объекта как Canvas Delphi - Pixels [i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора Image1. Canvas. Pixels [100,100]: =clRed;

приведёт к рисованию красной точки с координатами [100, 100]. Так же легко узнать цвет пиксела можно обратным присвоением:: =Image1. Canvas. Pixels [100,100];

Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR. Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF. Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

Использование класса TCanvas обеспечивает следующие возможности:

§Создание изображений с помощью объектов кисть, перо, шрифт,

§Рисование и заливка различных фигур и линий,

§Вывод текста в графическом режиме,

§Загрузка графических изображений из файла,

§Программирование реакции на изменения в текущем изображении.

Объект TCanvas является одновременно и свойством многих других объектов. Так, с его помощью можно рисовать на поверхности следующих видимых объектов, содержащих свойство TCanvas: TForm, TBitmap, TComboBox, TDrawGrid, TImage, TListBox, TPaintBox, TPrinter и др.

Свойства: Свойство TCanvas представляет собой объект, который содержит в себе не только холст для рисования, но и средства рисования - перо Pen, кисть Brush и шрифт Font. Ниже, в таблице 1, приведен полный список свойств объекта TCanvas.


Таблица 1. Свойства объекта TCanvas

СвойствоОбъявлениеBrush, property Brush: TBrushОпределяет цвет и стиль заполнения замкнутых фигур и фона. ClipRect, propertv ClipRect: TRect; Определяет доступную область рисования на канве и область, подлежащую перерисовке при событии OnPaint. Свойство только для чтения. CopyMode, property CopyMode: TCopyMode; Определяет режим копирования графического изображения на канву. Font, property Font: TFontОпределяет атрибуты шрифта, которым выводится текст. Pen, property Pen: TPenОпределяет свойства пера, рисующего линии и фигуры. PenPos, property PenPos: TPointОпределяет текущую позицию пера. Pixels, property Pixels [X. Y: Integer]: TColor: Определяет цвета пикселов.

Методы: Canavas обеспечивает пространство (холст, канву) для создания, хранения и модификации графических объектов. Ниже, в таблице 2, приведены основные методы класса TCanvas.


Таблица 2. Методы класса TCanvas

МетодОписаниеArc, procedure Arc (Xl, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: integer) Рисует дугу окружности или эллипса. (XI,Y1) и (X2,Y2) определяют описанный прямоугольник, (X3,Y3) и (X4,Y4) - точки, через которые проходят радиусы, отмечающие начало и конец дуги. Chord, procedure Chord (Xl, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: integer) Рисует замкнутую фигуру, ограниченную дугой и хордой. (XI,Y1) и (X2,Y2) определяют описанный прямоугольник. (X3,Y3) и (X4,Y4) - точки, через которые проходит хорда. Draw, procedure Draw (X, x: Integer; Graphic: TGraphic) Выводит графическое изображение Graphic в указанную позицию канвы (X, Y - левый верхний угол). Ellipse, procedure Ellipse (Xl, Yl, X2, Y2: Integer) Рисует окружность или эллипс. (XI, Yl) и (Х2, Y2) определяют описанный прямоугольник. FillRect, procedure FillRect (const Rect: TRect) Заполняет указанный прямоугольник канвы, используя текущее значение кисти Brush. FrameRect, procedure FrameRect (const Rect: TRect) Рисует на канве текущей кистью прямоугольную рамку толщиной в 1 пиксель без заполнения внутренней части прямоугольника. LineTo, procedure LineTo (X, Y: Integer) Рисует на канве прямую линию, начинающуюся с текущей позиции пера и кончающуюся точкой. MoveTo, procedure MoveTo (X, Y: integer) Изменяет текущую позицию пера на заданную, ничего не рисуя. Pie, procedure Pie (Xl, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: Longint) Рисует сектор окружности или эллипса. (XI,Y1) и (X2,Y2) определяют описанный прямоугольник. (X3,Y3) и (X4,Y4) - точки, через которые проходят радиксы, ограничивающие сектор. Polygon, procedure Polygon (Points: array of TPoint) Рисует замкнутую фигуру с кусочно-линейной границей (многоугольник). Polyline, procedure Polyline (Points: array of TPoint) Рисует незамкнутую кусочно-линейную ломаную линию. Rectangle, procedure Rectangle (Xl, Yl, X2, Y2: Integer) Рисует прямоугольник, заданный (X1, Y1) и (Х2, Y2). RoundRect, procedure RoundRect (Xl, Yl, X2, Y2, ХЗ, Y3: Integer) Рисует прямоугольник со скругленными углами: (X1, Y1) и (Х2, Y2) - прямоугольник, ХЗ и Y3 - ширина и высота эллипса скругления. StretchDraw, procedure StretchDraw (const Rect: TRect; Graphiс: TGraphic) Рисует графическое изображение Graphic в указанную прямоугольную область канвы Rect, подгоняя размер изображения под заданную область. TextOut, procedure TextOut (X, Y: Integer; const Text: string) Пишет указанную строку текста Text на канве, начиная с указанной позиции.

1.2 Объекты TBrush, TFont и TPen


·Свойство Brush представляет собой объект кисти со своим набором свойств:


СвойствоОбъявление / ОписаниеBitmap propertv Bitmap: TBitmap; Картинка размером 8х8 пикселей, которая используется как шаблон заполнения. Color propertv Color: TColor: Цвет заливки (кисти). По умолчанию - clWhite. Style property Style: TBrushStyleОпределяет стиль заливки.

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


СвойствоОбъявление / ОписаниеColor property Color: TColor; Определяет цвет текста. Height property Height: Integer; Характеризует высоту шрифта в пикселах. Name property Name: TFontName; Вид (имя) шрифта. Size property Size: Integer; Размер шрифта в кеглях (пунктах). Style property Style: TFontStyles; Стиль шрифта: полужирный, курсив, подчеркнутый, перечеркнутый.

·Свойство Pen представляет собой объект пера, который определяет вид линий, применяемых для рисования различных фигур, и имеет собственный набор свойств:


СвойствоОбъявление / ОписаниеColor property Color: TColor; Цвет пера. По умолчанию clBlack. Mode property Mode: TPenMode; Определяет режим рисования линий. Style property Style: TPenStyle; Определяет стиль рисования линий. Width property Width: Integer; Определяет толщину линии в пикселах. Влияет на Style.

В процессе рисования с использованием методов объекта Canvas требуется задавать цвета линий, текста и заливки, что делается путем установки свойства Color объектов пера, шрифта и кисти соответственно. Для задания определенного цвета применяются специальные цветовые константы. Существует большое количество таких констант, в чем можно убедиться, раскрыв в Инспекторе объектов список цветов, в поле справа от свойства Color, любого из компонентов, например Form. В качестве основных можно выделить одиннадцать основных цветовых констант:

clBlack - черный цвет;

clMaroon - коричневый цвет;

clGray - серый цвет;

clBlue - синий цвет;

clAqua - голубой цвет;

clGreen - темно-зеленый цвет;

clLime - светло-зеленый цвет;

clFuchsia - фиолетовый цвет;

clRed - красный цвет;

clYellow - желтый цвет;

clWhite - белый цвет.

Кроме того, существует еще множество констант для обозначения других цветов.


Глава 2. Пример программы


Создадим простое приложение, иллюстрирующее работу с графикой в Delphi на примере рисования кривых и ломаных. Поместим на форму шесть компонентов Edit1, Edit2, Edit3, Edit4, Edit5 и Edit6, шесть компонентов Label1, Label2, Label3, Label4, Label5, Label 6соответственно, а также два компонента Button1 и Button2.

Цель работы. Создать программу для рисования кривых и ломаных в Delphi. Для начала, на нашей форме расставим в нужном нам порядке все компоненты так, чтобы было место на нашей форме для изображения линий. В нашем случае, линии будут выводиться справа от самих компонентов. (Рисунок 3.1)


Рисунок 3.1


Компоненты Edit1, Edit2, Edit3, Edit4, Edit5 и Edit6 будут служить полем для ввода координат. В окне Object Inspector удалим значения свойств Caption, для ввода нужных нам значений. Для компонентов Label1, Label2, Label3, Label4, Label5, Label6 изменим значения свойств на x1,y1,x2,y2, х3, у3. Кнопки Button1 и Button2 переименуем как "Нарисовать" и "Очистить" соответственно.


Рисунок 3.2


Добавим еще семь компонентов Label7, Label8, Label9, Label10, Label11, Label12 и Label13, шесть из которых будут использоваться для показа ограничений для наших координат, так как при вводе определенного значения для определенной точки, наш объект может сместиться за пределы нашей формы. Их мы поместим над ячейками, куда будем вводить эти самые данные. Компонент Label13 будет использоваться для того, чтобы указать нам, куда мы должны вводить координаты. В окне Object Inspector поэкспериментируем со шрифтами (TFont).


графика компьютерная delphi canvas

Рисунок 3.3


Приступим к записи процедур для нашей программы. Для этого нужно дважды щелкнуть левой кнопкой мыши по Button1 (Нарисовать объект) и у нас откроется окно Code, для ввода процедур. В нашем случае, в этом окне уже будет заготовка процедуры:


procedure TForm1. Button1Click (Sender: TObject);x1,x2,x3,y1,y2,y3: integer;: =strtoint (edit1. Text);: =strtoint (edit2. Text);: =strtoint (edit3. Text);: =strtoint (edit4. Text);: =strtoint (edit5. Text);: =strtoint (edit6. text);. Pen. Width: =4;. Pen. Color: =(Random (256), Random (256), Random (256));(Random (256), Random (256), Random (256));. Brush. Color: =(Random (256), Random (256), Random (256));. polyLine ([point (X1,Y1),point (X2,Y2),point (X3,Y3)]);

end;

Щелкнем дважды левой кнопкой мыши и по Button2 (Очистить). В окне Code, для процедуры введем следующее:

procedure TForm1. Button2Click (Sender: TObject);

form1. Refresh;

end;

end.

Выполняем программу (F9), задавая различные координаты точек в указанных ячейках (X1,Y1,X2,Y2,X3,Y3).

Блок-схема алгоритма


Заключение


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

В результате выполнения данной курсовой работы, я убедилась в широких возможностях Delphi.

Литература


1. Лекционный курс. Графика. Рисование стандартных фигур.

2. Свойства: Brush, Font, Pen #"center">Приложение


Листинг программыUnit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class (TForm): TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TButton;: TButton;: TLabel;: TEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;Button2Click (Sender: TObject);Button1Click (Sender: TObject);

{ Private declarations }

{ Public declarations }

end;: TForm1;

implementation

{$R *. dfm}

procedure TForm1. Button1Click (Sender: TObject); x1,x2,x3,y1,y2,y3: integer;

begin: =strtoint (edit1. Text);: =strtoint (edit2. Text);: =strtoint (edit3. Text);: =strtoint (edit4. Text);: =strtoint (edit5. Text);: =strtoint (edit6. text);. Pen. Width: =4;. Pen. Color: =(Random (256), Random (256), Random (256));(Random (256), Random (256), Random (256));. Brush. Color: =(Random (256), Random (256), Random (256));. polyLine ([point (X1,Y1),point (X2,Y2),point (X3,Y3)]);

end;TForm1. Button2Click (Sender: TObject);

form1. Refresh;

end;.


Результат работы

Рисунок 4. 1


МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ