Методические рекомендации. Тип объект (Object) можно рассматривать как усовершенствование типа запись (Record): описание свойств

1.5.1 Объектный тип данных. Описание класса.

Тип объект (Object) можно рассматривать как усовершенствование типа запись (Record): описание свойств, параметры моделируемой сущности (они занимают поля объекта) дополняются методами - описаниями действий с объектом. Собственно, в описании объектного типа дают лишь заголовки соответствующих блоков, а сами блоки приводят ниже. Имеется и еще одно чисто формальное отличие от описания записи: вместо Record используется слово Object. Переменные объектного типа называются экземплярами объекта. В отличие от типа «запись» объектный тип содержит не только поля, описывающие данные, но также процедуры и функции, описания которых содержаться в описании объекта. Эти процедуры и функции и являются методами. Методам объекта доступны его поля. Методы и их параметры определяются в описании объекта, а их реализация дается вне этого описания, в том месте программы, которое предшествует вызову данного метода. В описании объекта содержатся лишь шаблоны обращений к методам, которые необходимы компилятору для проверки соответствия количества параметров и их типов при обращении к методам.

Описание объектного типа осуществляется в секции interface программного модуля (см. рис.1).

Рисунок 1 – Описание объектного типа TFigura

Реализация описанных в объектном типе методов происходит в секции implementation программного модуля. Имя метода является составным: в начале указывается тип объекта, а затем сам метод.

….

Implementation

Procedure TFigura.Draw (c:TColor);

Begin

// тело метода;

End;

1.5.2 Графические возможности Delphi. Canvas

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

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

Таблица 1 – Свойства объекта Pen (Карандаш)

Свойство Описание
Color Цвет линии
Width Толщина линии (задается в пикселах)
Style Вид линии: psSolid ― сплошная; psDash ― пунктирная, длинные штрихи; psDot - пунктирная, короткие штрихи; psDashDot ― пунктирная, с чередованием длинного и короткого штрихов; psDashDotDot ― пунктирная с чередованием одного длинного и двух коротких штрихов; psClear ― линия не отображается (используется, если не надо изображать границу области, например, прямоугольника)

Таблица 2 – Свойства объекта Brush (Кисть)

Свойство Описание
Color Цвет закраски замкнутой области.
Style Стиль закраски области:― сплошная заливка; штриховка: bsHorizontal―горизонтальная; bsVertical―вертикальная; bsFDiagonal ― диагональная с наклоном линии вперед; bsBDiagonal ― диагональная с наклоном линии назад; bsCross―диагональная клетка.

Таблица 3 – Основные свойства класса TFont

Свойство Описание
Name Шрифт, который используется для отображения текста. В качестве значения следует брать название шрифта, например Arial.
Size Размер шрифта
Style Стиль начертания символов. Задается с помощью констант: fsBold(полужирный), fsItalic(курсив), fsUnderline(подчеркнутый), fsStrikeOut(перечеркнутый). Свойство Style является множеством, что позволяет комбинировать необходимые стили. Например, инструкция, которая устанавливает стиль «полужирный курсив», выглядит так: Font.Style:= [fsBold, fsItalic]
Color Цвет символов. В качестве значения можно использовать константу типа TColor.

Не все компоненты в Delphi имеют эти свойства. Свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама форма, которая размещает компоненты.

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

Таблица 4 – Константы TColor

Цвет Константа
Бирюзовый clAqua
Черный clBlack
Синий clBlue
Ярко-розовый clFuchsia
Зеленый clGreen
Салатовый cLime
Каштановый clMaroon
Темно-синий clNavy
Оливковый clOlive
Фиолетовый clPurple
Красный clRed
Серебристый clSilver
Зелено-голубой clTeal
Белый clWhite

Основное свойство такого объекта как Canvas Delphi - Pixels[i,j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом.

Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет.

Например:

Form1.Canvas.Pixels[100, 100]:= clRed;

приведёт к рисованию красной точки с координатами [100, 100].

Узнать цвет пиксела можно обратным присвоением:

Color:=Form1.Canvas.Pixels[100,100];

Таблица 5 – Свойства класса TCanvas

Свойство Описание
Pen Карандаш. Определяет цвет, стиль и толщинц линии, которую рисует, например метод Lineto
PenPos Положение (координаты) карандаша
Brush Кисть. Определяет цвет и стиль закраски области, например прямоугольника, который рисует метод Rectangle.
Font Шрифт. Определяет шрифт, который используется для вывода текста, например методом TextOut.

Таблица 6 – Методы класса TCanvas

Метод Действие
   
Lineto(x, y) Рисует линию из текущей точки в точку с указанными координатами (перемещение указателя текущей точки в нужную обеспечивает метод Moveto). Цвет линии определяется свойством Pen.Color.
Rectangle(x1,y1,x2, y2) Рисует прямоугольник. Параметры x1, y1указывают координаты верхней левой точки, аx2, y2 координаты нижней правой точки. Цвет границы прямоугольника определяет свойство Pen.Color, цвет закраски области ― свойствоBrush.Color.
RoundRect(x1, y1, x2, y2, x3, y3) Рисует прямоугольник со скругленными углами. Параметры x1, y1 указывают координаты верхней левой точки, x2, y2 координаты нижней правой точки, а x3, y3 радиус скругления. Цвет границы прямоугольника определяет свойство Pen.Color,цвет закраски области ― свойство Brush.Color.

Продолжение таблицы 6

   
Ellipse(x1, y1, x2, y2) Рисует эллипс (окружность). Параметры x1, y1 указывают координаты верхней левой точки, аx2, y2 координаты нижней правой точки прямоугольника в который вписана окружность. Цвет границы прямоугольника определяет свойство Pen.Color, цвет закраски области ― свойство Brush.Color.
Arc(x1, y1, x2, y2, x3, y3,x4, y4) Рисует дугу. Параметры x1, y1, x2 и y2 задают эллипс, частью которого является дуга, параметры x3, y3, x4 и y4 ― начальную и конечную точку дуги. Цвет дуги определяет свойство Pen.Color.
Pie(x1,y1,x2,y2,x3,y3,x4,y4) Рисует сектор. Параметры x1, y1, x2 и y2 задают эллипс, частью которого является сектор, параметры x3, y3, x4 и y4 ―границы сектора. Цвет границы сектора определяет свойствоPen.Color, цвет закраски сектора ― свойствоBrush.Color.
FillRect(aRect) Рисует закрашенный прямоугольник. Параметр aRect(тип TRect) определяет положение и размер прямоугольника. Цвет закраски области определяет свойство Brush.Color.
FrameRect(aRect) Рисует контур прямоугольника. ПараметрaRect(тип TRect) определяет положение и размер прямоугольника. Цвет контура определяет свойство Brush.Color.
Polyline(points, n) Рисует ломаную линию. Points ― массив типаTPoint. Каждый элемент массива представляет собой запись, поля x и y, которые содержат координаты точки перегиба ломаной. n ―количество звеньев ломаной. Метод Polyline вычерчивает ломаную линию, последовательно соединяя прямые точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т.д.

Вычерчивание графических элементов на графической поверхности, например компонента Image (закладка Additional), выполняют соответствующие методы класса TCanvas.

Инструкция, обеспечивающая вычерчивание графического элемента, в общем виде выглядит так:

Объект. Canvas. Метод(Параметры);

Объект определяет объект, на поверхности которого нужно нарисовать графический элемент. В качестве объекта можно указать компонент Image.

Метод – это имя метода, который обеспечивает рисование нужного графического элемента.

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

Например в результате выполнения инструкции

Form1.Canvas.Rectangle(10,20,60,40);

В поле компонента Form1 будет нарисован прямоугольник шириной 50 и высотой 20 пикселов, левый верхний угол которого будет находиться в точке(10,20).

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

Вывод строки текста на графическую поверхность объекта обеспечивает метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:

Объект.Canvas.TextOut(x, y, '*Текст*');

Параметры x, y определяют координаты точки графической поверхности, от которой выполняется вывод текста.

Шрифт, используемый для отображения текста, определяет свойство Font графической поверхности, на которую текст выводится. Свойство Font представляет собой объект типа TFont.

1.5.3 Создание простого класса фигур

Для начала работы над проектом необходимо запустить среду программирования Delphi.

Внутри программного модуля описать объектный тип данных TFigura

type

TFigura=class

procedure Draw (c:TColor);

end;

Организовать дочерний тип данных

TLine=class(TFigura)

procedure Resize(xx,yy:integer);

end;

В глобальном разделе переменных объявить объект класса TLine

var

Form1: TForm1;

L:TLine;

В секции implementation организовать реализацию описанных методов

implementation

{$R *.dfm}

procedureTFigura.Draw(c:Tcolor);

begin

form1.canvas.pen.color:=c;

end;

procedureTLine.Resize(xx,yy:integer);

begin

form1.canvas.LineTo(xx,yy);

end;

Окно приложения Delphi состоит из нескольких окон. В окно формы необходимо поместить со вкладки Standart объект Button1 (см.рисунок 2).

Рисунок 2 – Вкладка Standart

Для объекта Button1 изменить свойство Caption на «Нарисовать объект»

Рисунок 3 – Свойства объекта Button1

Для объекта Button1 организовать событие OnClick, прописать следующий код:

procedure TForm1.Button1Click(Sender: TObject);

begin

xn:=40;

yn:=50;

cl:=clRed;

L.Draw(cl);

L.Resize(xn,yn);

end;

Варианты индивидуальных заданий

1) Класс объектов «Окружность». Методы изменение цвета контура и радиуса;

2) Класс объектов «Квадрат». Методы рисование квадрата, изменение его положения (по горизонтали);

3) Класс объектов «Прямоугольник». Методы изменение цвета контура и размера;

4) Класс объектов «Скругленный прямоугольник». Методы изменение размера и контура фигуры;

5) Класс объектов «Окружность». Методы изменение цвета заливки и положения (по вертикали);

6) Класс объектов «Прямоугольник». Методы изменение стиля заливки и положения (по горизонтали);

7) Класс объектов «Квадрат». Методы изменение стиля заливки и цвета контура;

8) Класс объектов «Сектор». Методы Изменение цвета контура и стиля заливки;

9) Класс объектов «Скругленный прямоугольник». Методы изменение размеров и цвета контура;

10) Класс объектов «Сектор». Методы изменение размеров и цвета заливки;

11) Класс объектов «Окружность». Методы изменение положения и стиля контура;

12) Класс объектов «Овал». Методы изменение горизонтального радиуса и цвета заливки;

13) Класс объектов «Квадрат». Методы изменение размера и цвета заливки;

14) Класс объектов «Овал». Методы изменение положения (по горизонтали) и изменение стиля контура;

15) Класс объектов «Прямоугольник». Методы изменение положения (по вертикали) и цвета заливки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: