property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
|
procedure SetDrawSettings; Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием |
|
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) |
|
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;
Мультирисунок после создания хранится не в виде последовательности отдельных рисунков, а в виде одного длинного рисунка, в котором все кадры-рисунки расположены последовательно по горизонтали. Такой длинный рисунок можно сохранить в файл для последующего использования: