Выбрать главу

property BorderWidth: integer;

Ширина границы

property Bordered: boolean;

Имеет ли объект границу (по умолчанию True)

property Filled: boolean;

Заполнена ли внутренность объекта (по умолчанию True)

Методы, унаследованные от класса BoundedObjectABC

procedure SetDrawSettings;

Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием

Свойства, унаследованные от класса ObjectABC

property Left: integer;

Отступ графического объекта от левого края

property Top: integer;

Отступ графического объекта от верхнего края

property Width: integer;

Ширина графического объекта

property Height: integer;

Высота графического объекта

property dx: integer;

x-координата вектора перемещения объекта при вызове метода Move. По умолчанию установлено в 0. Для неподвижных объектов может быть использовано для хранения любой дополнительной информации, связанной с объектом

property dy: integer;

y-координата вектора перемещения объекта при вызове метода Move. По умолчанию установлено в 0. Для неподвижных объектов может быть использовано для хранения любой дополнительной информации, связанной с объектом

property Center: Point;

Центр графического объекта

property Position: Point;

Левый верхний угол графического объекта

property Visible: boolean;

Видим ли графический объект

property Color: GColor;

Цвет графического объекта

property FontColor: GColor;

Цвет шрифта графического объекта

property Text: string;

Текст внутри графического объекта

property TextVisible: boolean;

Видимость текста внутри графического объекта

property TextScale: real;

Масштаб текста относительно размеров графического объекта, 0<=TextScale<=1. При TextScale=1 текст занимает всю ширину или высоту объекта. По умолчанию TextScale=0.8

property FontName: string;

Имя шрифта для вывода свойства Text

property FontStyle: FontStyleType;

Стиль шрифта для вывода свойства Text

property Number: integer;

Целое число, выводимое в центре графического объекта. Для вывода используется свойство Text

property RealNumber: real;

Вещественное число, выводимое в центре графического объекта. Для вывода используется свойство Text. Вещественное число выводится с одним знаком после десятичной точки

property Owner: ContainerABC;

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

Методы, унаследованные от класса ObjectABC

procedure MoveTo(x,y: integer);

Перемещает левый верхний угол графического объекта к точке (x, y)

procedure MoveOn(a,b: integer);

Перемещает графический объект на вектор (a, b)

procedure Move; override;

Перемещает графический объект на вектор, задаваемый свойствами dx, dy

procedure Scale(f: real); override;

Масштабирует графический объект в f раз (f>1 - увеличение, 0<f<1 - уменьшение)

procedure ToFront;

Переносит графический объект на передний план

procedure ToBack;

Переносит графический объект на задний план

function Bounds: System.Drawing.Rectangle;

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

function PtInside(x,y: integer): boolean; override;

Возвращает True, если точка (x, y) находится внутри графического объекта, и False в противном случае

function Intersect(g: ObjectABC): boolean;

Возвращает True, если изображение данного графического объекта пересекается с изображением графического объекта g, и False в противном случае. Белый цвет считается прозрачным и не принадлежащим объекту

function IntersectRect(r: System.Drawing.Rectangle): boolean;

Возвращает True, если прямоугольник графического объекта пересекается прямоугольником r, и False в противном случае

function Clone0: ObjectABC; override;

Возвращает клон графического объекта

procedure Draw(x,y: integer; g: Graphics); override;

Защищенная. Не вызывается явно. Переопределяется для каждого графического класса. Рисует объект на объекте g: Graphics

destructor Destroy;

Уничтожает графический объект

Мультирисунки

Мультирисунок представляет собой объект класса MultiPictureABC и содержит несколько картинок одинакового размера (кадры мультирисунка), одна из которых отображается на экране.

Мультирисунки удобно использовать для графических объектов, имеющих несколько состояний. Например, для игрового объекта в мультирисунке хранятся все его повороты: вверх, вниз, вправо, влево. Мультирисунки удобно использовать также для создания спрайтов - анимационных рисунков с автоматически меняющимися кадрами. Однако, для спрайтов предназначен специальный класс SpriteABC, расположенный в модуле ABCSprites.

Рассмотрим создание мультирисунка из четырех рисунков, каждый из которых находится в отдельном файле:

uses ABCObjects,GraphABC;

var p: MultiPictureABC;

begin

p := new MultiPictureABC(50,50,'multi1.bmp');

p.Add('multi2.bmp');

p.Add('multi3.bmp');

p.Add('multi2.bmp');

end.

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

Для смены рисунка достаточно изменить свойство CurrentPicture:

p.CurrentPicture := 2;

Можно также циклически перейти к следующему рисунку:

p.NextPicture;

или к предыдущему рисунку:

p.PrevPicture;

Нетрудно организовать анимацию, состоящую в последовательной циклической смене рисунков:

while True do

begin

p.NextPicture;

Sleep(100);

end;

Мультирисунок после создания хранится не в виде последовательности отдельных рисунков, а в виде одного длинного рисунка, в котором все кадры-рисунки расположены последовательно по горизонтали. Такой длинный рисунок можно сохранить в файл для последующего использования: