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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    158,69 Кб
  • Опубликовано:
    2014-12-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Содержание

Введение

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

.1 Объекты: Brush,Pen

.2 Объект Front

.3 Способы рисования прямоугольников

Глава 2. Программа иллюстрирующая рисования прямоугольников

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

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

Заключение

Литература

Приложение

Введение

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

Цель данной работы: создание программы, иллюстрирующей работу с графикой в Delphi на примере рисования прямоугольников, при этом необходимо предусмотреть возможность изменения размера и положения прямоугольника, цвет, стиль контура и заливку.

Для решения поставленной цели были определены следующие задачи:

изучение системы программирования Delphi;

изучение основных понятий и терминов;

приобретение практических навыков в создании программы.


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

Delphi позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации.

Программа выводит графику на поверхность объекта (формы или компонента Image). Поверхности объекта соответствует свойствоcanvas.

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

Методы вывода графических примитивов рассматривают свойствоCanvasкак некоторый абстрактный холст, на котором они могут рисовать. Холст состоит из отдельных точек - пикселов. Положение пиксела характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста.



Размер холста можно получить, обратившись к свойствам Heightиwidth области иллюстрации (image) или к свойствам формы: ClientHeightиClientwidth.

Методы класса Tcanvas.

Основные методы, объявленные в классе 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, Y: Integer; Graphic: TGraphic):

Выводит графическое изображение Graphic в указанную позицию канвы (X, Y - левый верхний угол).

Ellipse, procedure Ellipse(Xl, Yl, X2, Y2: Integer)

Рисует окружность или эллипс. (XI, Yl) и (Х2, Y2) определяют описанный прямоугольник.

FillRect, procedure FillRect(constRect: TRect);

Заполняет указанный прямоугольник канвы, используя текущее значение кисти Brush.

FloodFill, procedure FloodFill(X, Y: Integer: Color: TColor: FillStyle: TFillStyle);

Закрашивает текущей кистью замкнутую область канвы, определенную цветом Color и начальной точкой закрашивания (X, Y). При FillStyle = fsSurface заполняется область, окрашенная цветом Color, а при FillStyle =fsBorder, заполняется область, окрашенная любыми цветами, не равными Color.

FrameRect, procedure FrameRect(constRect: 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);

Рисует замкнутую фигуру с кусочно-линейной границей.

Polvline, 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 (constRect: TRect; Graphiс: TGraphic );

Рисует графическое изображение Graphic в указанную прямоугольную область канвы Rect, подгоняя размер изображения под заданную область.

TextOut, procedure TextOut(X, Y: Integer; const Text: string);

Пишет указанную строку текста Text на канве, начиная с указанной позиции.

TextRect, procedure TextRect(Rect: TRect; X, Y: Integer;const Text: string);

Пишет указанную строку текста Text на канве, начиная с указанной позиции и усекая текст, выходящий за пределы указанной прямоугольной области Rect.


Свойства.

Список свойств, определенных или переопределенных в TCanvas:

Свойство

Объявление / Описание

Brush propertyBrush: TBrush

Определяет цвет и стиль заполнения замкнутых фигур и фона.

Определяет доступную область рисования на канве и область, подлежащую перерисовке при событии OnPaint. Свойство только для чтения.

CopyMode property CopyMode: TCopyMode;

Определяет режим копирования графического изображения на канву.

Font property Font: TFont

Определяет атрибуты шрифта, которым выводится текст.

Pen propertyPen: TPen

Определяет свойства пера, рисующего линии и фигуры.

PenPos propertyPenPos: TPoint

Определяет текущую позицию пера.

Pixels property Pixels[X. Y: Integer]: TColor:

Определяетцветапикселов.


События

Событие

Описание

OnChange

Событие после изменения изображения.

OnChangine

Событие перед изменением изображения.


1.1 Объекты: Brush, Pen

Карандашу и кисти, используемым для вывода графики на холсте, соответствуют свойстваРеn(карандаш) иBrush(кисть), которые представляют собой объекты типа треп иTBrush, соответственно. Значения свойств этих объектов определяют вид выводимых графических элементов.

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

Свойства объекта треп (карандаш):

Свойство

Определяет

Color

Цвет линии

Width

Толщину линии

Style

Вид линии

Mode

Режим отображения


СвойствоColorзадает цвет линии, вычерчиваемой карандашом.

Значение свойства Color определяет цвет линии:

Константа

Цвет

Константа

Цвет

clBlack

Черный

clSilver

Серебристый

clMaroon

Каштановый

clRed

Красный

clGreen

Зеленый

clLime

Салатный

clOlive

Оливковый

clBlue

Синий

clNavy

Темно-синий

clFuchsia

Ярко-розовый

clPurple

Розовый

clAqua

Бирюзовый

clTeal

Зелено-голубой

clWhite

Белый

clGray

Серый

 

 

Значение свойства Реn.туре определяет вид линии:

Константа

Вид линии

psSolid

Сплошная линия

psDash

Пунктирная линия, длинные штрихи

psDot

Пунктирная линия, короткие штрихи

psDashDot

Пунктирная линия, чередование длинного и короткого штрихов

psDashDotDot

Пунктирная линия, чередование одного длинного и двух коротких штрихов

psClear

Линия не отображается (используется, если не надо изображать границу области, например, прямоугольника)


СвойствоModeопределяет, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия прочерчивается. По умолчанию вся линия вычерчивается цветом, определяемым значением свойстваPen.Color.

Кисть (canvas.Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей.

Кисть, как объект, обладает двумя свойствами:


Свойство

Определяет

Color

Цвет закрашивания замкнутой области

Style

Стиль (тип) заполнения области


Область внутри контура может быть закрашена или заштрихована. В первом случае область полностью перекрывает фон, а во втором - сквозь незаштрихованные участки области будет виден фон.

В качестве значения свойстваColorможно использовать любую из констант типаTColorКонстанты, позволяющие задать стиль заполнения области, приведены в таблице:

Константа

Тип заполнения (заливки) области

bsSolid

Сплошная заливка

bsClear

Область не закрашивается

bsHorizontal

Горизонтальная штриховка

bsVertical

Вертикальная штриховка

bsFDiagonal

Диагональная штриховка с наклоном линий вперед

bsBDiagonal

Диагональная штриховка с наклоном линий назад

bsCross

Горизонтально-вертикальная штриховка, в клетку

bsDiagCross

Диагональная штриховка, в клетку


Окно программы Стили заполнения областей




1.2 Объект Front

Модуль graphics.

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

Свойство

Объявление / Описание

Color property Color: TColor;

Определяетцветтекста.

Height propertyHeight: Integer;

Характеризует высоту шрифта в пикселах.

Name property Name: TFontName;

Вид (имя) шрифта.

Size propertySize: Integer;

Размер шрифта в кеглях (пунктах).

Style propertyStyle: TFontStyles;

Стиль шрифта: полужирный, курсив, подчеркнутый, перечеркнутый.


.3 Способы рисования прямоугольников

Rectangle

Рисует на канве текущим пером прямоугольник и закрашивает его текущей кистью

КлассTCanvas

Объявление

procedure Rectangle(XI, Yl, Х2, Y2: Integer);

Описание

Метод Rectangle рисует на канве текущим пером Реп прямоугольник,

верхний левый угол которого имеет координаты (XI, Y1), а нижний правый - (Х2, Y2). Прямоугольник закрашивается текущей кистью Brush.

Прямоугольник без внутренней закраски рисуется методом FrameRect.

Пример

Imagel.Canvas.Rectangle(10,10,210,110);

Polygon

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

Класс TCanvas

Объявление

procedure Polygon(Points: array of TPoint);

Описание

Метод Polygon рисует на канве замкнутую фигуру (полигон,многоугольник) по множеству угловых точек, заданному массивом Points. Первая из указанных точек соединяется прямой с последней. Этим метод Polygonотличается от метода Polyline, который не замыкает конечные точки. Рисование проводится текущим пером Реп. Внутренняя область фигуры закрашиваетсятекущей кистью Brush.

Метод позволяет рисовать фигуру по точкам, хранящимся в массиве элементов типа TPoint. Если желательно использовать для рисования только часть точек массива, это можно сделать с помощью функции Slice. Если надонарисовать полигон всего по нескольким точкам, то передавать их в методPolygonудобно с помощью функции Point.

Примеры

1. Оператор

Forml.Canvas.Polygon([Point(10,10),Point(30,10),

Point(130,30),Point(240, 120)]);

рисует на канве формы четырехугольник по точкам, заданным функциями

Point.

. Оператор

Forml.Canvas.Polygon(PointArray);

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

varPointArray:array[1..100] of TPoint;

3. Оператор

Form1.Canvas.Polygon(Slice(PointArray, 10));

рисует на канве формы многоугольник по первым 10 точкам, хранящимся в массиве PointArrayиз предыдущего примера.

Рисует на канве текущим пером кусочно-линейную кривую по заданному множествуточек

КлассTCanvas

Объявление

procedure Polyline(Points: array of TPoint);

Описание

Метод Polyline рисует на канве кусочно-линейную кривую по множеству точек, заданному массивом Points. Отличие метод Polylineот метода Polygon заключается в том, что метод Polygon замыкает конечные точки, а метод Polyline- нет. Рисование проводится текущим пером Реп. Метод не изменяет текущей позиции PenPosпера Реп.

Метод позволяет рисовать кусочно-линейный график функции, хранящийся в массиве элементов типа TPoint. Если желательно использовать для рисования только часть точек массива, это можно сделать с помощью функции Slice. Если надо нарисовать кривую всего по нескольким точкам, то передавать их в метод Polylineудобно с помощью функции Point.

Примеры

. Оператор

Form1.Canvas. Polyline([Point(10,10),Point(30,10),

Point (130, 30),Point(240, 120)]);  

рисует кусочно-линейную кривую по четырем точкам, заданным функциями

Point.

. varPointArray:array[0..100] of TPoint;TForm1.ButtonlClick(Sender: TObject);,x,y:word;i:=0 to 100 do begin:=Image1.ClientWidth*i div 100;:=trunc((Image1.ClientHeight div 2)*

(1 + sin (4*Pi*x/Image1.ClientWidth) ) ) ;[i]:=Point(x,y);;;TForml.Button2Click(Sender: TObject);.Canvas.PolyLine(PointArray);;TForml.Button3Click(Sender: TObject);.Canvas.PolyLine(Slice(PointArray,25));

end;

Первая процедура ButtonlClickзаполняет массив PointArrayточками, описывающими график функции sin(x) на протяжении двух периодов (4π). Вторая процедура Button2Click по точкам из этого массива рисует график на канве компонента Imagel. Третья процедура Button3Click использует для рисования графика первые 25 точек этого массива.

Рисует на канве прямоугольную рамку со скругленными углами

КлассTCanvas

Объявление

procedureRoundRect(XI, Yl, Х2, Y2, ХЗ, Y3: Integer);

Описание

Метод RoundRectрисует на канве прямоугольную рамку со скругленными

углами, используя текущие установки пера Pen и заполняя площадь фигурытекущей кистью Brush. Рамка определяется прямоугольником с координатами углов (XI,Y1) и (X2,Y2). Углы скругляются с помощьюэллипсов с шириной ХЗ и высотой Y3.

Если задать ширину эллипса ХЗ ≥ Х2─XI, то верхняя и нижняя границы рамки окажутся целиком скругленными (без прямолинейной части). Если Y3 ≥ Y2 ─ Y1, то же самое произойдет с левой и правой границами рамки. Еслиже оба измерения эллипса не меньше размеров рамки, то будет рисоватьсяпросто эллипс. Но, конечно, для рисования эллипса лучше использовать методEllipse. Если один из размеров эллипса задать нулевым, то будет рисоватьсяпрямоугольная рамка. Но, конечно, для такой рамки лучше использовать метод Rectangle.

Пример

Следующие операторы вызывают изображение, показанное на рис.:

 

withImagel.Canvas do(10,10,110,210,50,100);(160,10,260,210,100,100);(310,10,410,210,50,200);(460,10,560,210,100,200);;

Рис. Примеры применения функции Round Rect

Глава 2. Программа иллюстрирующая рисования прямоугольников

Создадим простое приложение, иллюстрирующее работу с графикой в Delphi на примере рисования прямоугольников.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!