Описание языка PascalABC.NET — страница 3 из 5

Модуль GraphABC

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

Модуль GraphABC основан на графической библиотеке GDI+, но запоминает текущие перо, кисть и шрифт, что позволяет не передавать их в качестве параметров при вызове графических примитивов. К свойствам пера, кисти и шрифта можно получать доступ как в процедурном, так и в объектном стиле. Например, для доступа к цвету текущего пера используется процедура SetPenColor(c) и функция PenColor, а также свойство Pen.Color.

В модуле GraphABC можно управлять самим графическим окном и компонентом GraphABCControl, на котором осуществляется рисование. По умолчанию компонент GraphABCControl занимает всю клиентскую часть графического окна, однако, на графическое окно можно добавить элементы управления, уменьшив область, занимаемую графическим компонентом (например, так сделано в модулях Robot и Drawman).

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

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

В модуле GraphABC определен ряд констант, типов, процедур, функций и классов для рисования в графическом окне. Они подразделяются на следующие группы:

Графические примитивы

Функции для работы с цветом

Цветовые константы

Действия с пером: процедуры и функции

Действия с пером: объект Pen

Стиль пера

Действия с кистью: процедуры и функции

Действия с кистью: объект Brush

Стили кисти

Стили штриховки кисти

Действия со шрифтом: процедуры и функции

Действия со шрифтом: объект Font

Стили шрифта

Действия с рисунками: класс Picture

Действия с графическим окном: процедуры и функции

Действия с графическим окном: объект Window

Действия с системой координат: процедуры и функции

Действия с системой координат: объект Coordinate

Блокировка рисования и ускорение анимации

Режимы рисования

События GraphABC

Виртуальные коды клавиш

Перенаправление ввода-вывода


Типы и переменные модуля GraphABC

Color = System.Drawing.Color;

Тип цвета

Point = System.Drawing.Point;

Тип точки

GraphABCException = class(Exception) end;

Тип исключения GraphABC

RedrawProc: procedure;

Процедурная переменная перерисовки графического окна. Если равна nil, то используется стандартная перерисовка

DrawInBuffer: boolean;

Следует ли рисовать во внеэкранном буфере

Графические примитивы

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

procedure SetPixel(x,y: integer; c: Color);

Закрашивает пиксел с координатами (x,y) цветом c

procedure PutPixel(x,y: integer; c: Color);

Закрашивает пиксел с координатами (x,y) цветом c

function GetPixel(x,y: integer): Color;

Возвращает цвет пиксела с координатами (x,y)

procedure MoveTo(x,y: integer);

Устанавливает текущую позицию рисования в точку (x,y)

procedure LineTo(x,y: integer);

Рисует отрезок от текущей позиции до точки (x,y). Текущая позиция переносится в точку (x,y)

procedure LineTo(x,y: integer; c: Color);

Рисует отрезок от текущей позиции до точки (x,y) цветом c. Текущая позиция переносится в точку (x,y)

procedure Line(x1,y1,x2,y2: integer);

Рисует отрезок от точки (x1,y1) до точки (x2,y2)

procedure Line(x1,y1,x2,y2: integer; c: Color);

Рисует отрезок от точки (x1,y1) до точки (x2,y2) цветом c

procedure FillCircle(x,y,r: integer);

Заполняет внутренность окружности с центром (x,y) и радиусом r

procedure DrawCircle(x,y,r: integer);

Рисует окружность с центром (x,y) и радиусом r

procedure FillEllipse(x1,y1,x2,y2: integer);

Заполняет внутренность эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawEllipse(x1,y1,x2,y2: integer);

Рисует границу эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure FillRectangle(x1,y1,x2,y2: integer);

Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure FillRect(x1,y1,x2,y2: integer);

Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawRectangle(x1,y1,x2,y2: integer);

Рисует границу прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure FillRoundRect(x1,y1,x2,y2,w,h: integer);

Заполняет внутренность прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

procedure DrawRoundRect(x1,y1,x2,y2,w,h: integer);

Рисует границу прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

procedure Circle(x,y,r: integer);

Рисует заполненную окружность с центром (x,y) и радиусом r

procedure Ellipse(x1,y1,x2,y2: integer);

Рисует заполненный эллипс, ограниченный прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure Rectangle(x1,y1,x2,y2: integer);

Рисует заполненный прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2)

procedure RoundRect(x1,y1,x2,y2,w,h: integer);

Рисует заполненный прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

procedure Arc(x,y,r,a1,a2: integer);

Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure FillPie(x,y,r,a1,a2: integer);

Заполняет внутренность сектора окружности, ограниченного дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure DrawPie(x,y,r,a1,a2: integer);

Рисует сектор окружности, ограниченный дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure Pie(x,y,r,a1,a2: integer);

Рисует заполненный сектор окружности, ограниченный дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure DrawPolygon(points: arrayof Point);

Рисует замкнутую ломаную по точкам, координаты которых заданы в массиве points

procedure FillPolygon(points: arrayof Point);

Заполняет многоугольник, координаты вершин которого заданы в массиве points

procedure Polygon(points: arrayof Point);

Рисует заполненный многоугольник, координаты вершин которого заданы в массиве points

procedure Polyline(points: arrayof Point);

Рисует ломаную по точкам, координаты которых заданы в массиве points

procedure Curve(points: arrayof Point);

Рисует кривую по точкам, координаты которых заданы в массиве points

procedure DrawClosedCurve(points: arrayof Point);

Рисует замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure FillClosedCurve(points: arrayof Point);

Заполняет замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure ClosedCurve(points: arrayof Point);

Рисует заполненную замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure TextOut(x,y: integer; s: string);

Выводит строку s в прямоугольник к координатами левого верхнего угла (x,y)

procedure TextOut(x,y: integer; n: integer);

Выводит целое n в прямоугольник к координатами левого верхнего угла (x,y)

procedure TextOut(x,y: integer; r: real);

Выводит вещественное r в прямоугольник к координатами левого верхнего угла (x,y)

procedure DrawTextCentered(x,y,x1,y1: integer; s: string);

Выводит строку s, отцентрированную в прямоугольнике с координатами (x,y,x1,y1)

procedure DrawTextCentered(x,y,x1,y1: integer; n: integer);

Выводит целое значение n, отцентрированное в прямоугольнике с координатами (x,y,x1,y1)

procedure DrawTextCentered(x,y,x1,y1: integer; r: real);

Выводит вещественное значение r, отцентрированное в прямоугольнике с координатами (x,y,x1,y1)

procedure FloodFill(x,y: integer; c: Color);

Заливает область одного цвета цветом c, начиная с точки (x,y).

Функции для работы с цветом

Тип цвета Color является синонимом System.Drawing.Color.

function RGB(r,g,b: byte): Color;

Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие (r,g и b - в диапазоне от 0 до 255)

function ARGB(a,r,g,b: byte): Color;

Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие и прозрачность (a) (a,r,g,b - в диапазоне от 0 до 255)

function RedColor(r: byte): Color;

Возвращает красный цвет с интенсивностью r (r - в диапазоне от 0 до 255)

function GreenColor(g: byte): Color;

Возвращает зеленый цвет с интенсивностью g (g - в диапазоне от 0 до 255)

function BlueColor(b: byte): Color;

Возвращает синий цвет с интенсивностью b (b - в диапазоне от 0 до 255)

function clRandom: Color;

Возвращает случайный цвет

function GetRed(c: Color): integer;

Возвращает красную составляющую цвета

function GetGreen(c: Color): integer;

Возвращает зеленую составляющую цвета

function GetBlue(c: Color): integer;

Возвращает синюю составляющую цвета

function GetAlpha(c: Color): integer;

Возвращает составляющую прозрачности цвета

Цветовые константы

clAquamarine

clAzure

clBeige

clBisque

clBlack

clBlanchedAlmond

clBlue

clBlueViolet

clBrown

clBurlyWood

clCadetBlue

clChartreuse

clChocolate

clCoral

clCornflowerBlue

clCornsilk

clCrimson

clCyan

clDarkBlue

clDarkCyan

clDarkGoldenrod

clDarkGray

clDarkGreen

clDarkKhaki

clDarkMagenta

clDarkOliveGreen

clDarkOrange

clDarkOrchid

clDarkRed

clDarkTurquoise

clDarkSeaGreen

clDarkSlateBlue

clDarkSlateGray

clDarkViolet

clDeepPink

clDarkSalmon

clDeepSkyBlue

clDimGray

clDodgerBlue

clFirebrick

clFloralWhite

clForestGreen

clFuchsia

clGainsboro

clGhostWhite

clGold

clGoldenrod

clGray

clGreen

clGreenYellow

clHoneydew

clHotPink

clIndianRed

clIndigo

clIvory

clKhaki

clLavender

clLavenderBlush

clLawnGreen

clLemonChiffon

clLightBlue

clLightCoral

clLightCyan

clLightGray

clLightGreen

clLightGoldenrodYellow

clLightPink

clLightSalmon

clLightSeaGreen

clLightSkyBlue

clLightSlateGray

clLightSteelBlue

clLightYellow

clLime

clLimeGreen

clLinen

clMagenta

clMaroon

clMediumBlue

clMediumOrchid

clMediumAquamarine

clMediumPurple

clMediumSeaGreen

clMediumSlateBlue

clMoneyGreen

clPlum

clMistyRose

clNavy

clMidnightBlue

clMintCream

clMediumSpringGreen

clMoccasin

clNavajoWhite

clMediumTurquoise

clOldLace

clOlive

clOliveDrab

clOrange

clOrangeRed

clOrchid

clPaleGoldenrod

clPaleGreen

clPaleTurquoise

clPaleVioletRed

clPapayaWhip

clPeachPuff

clPeru

clPink

clMediumVioletRed

clPowderBlue

clPurple

clRed

clRosyBrown

clRoyalBlue

clSaddleBrown

clSalmon

clSandyBrown

clSeaGreen

clSeaShell

clSienna

clSilver

clSkyBlue

clSlateBlue

clSlateGray

clSnow

clSpringGreen

clSteelBlue

clTan

clTeal

clThistle

clTomato

clTransparent

clTurquoise

clViolet

clWheat

clWhite

clWhiteSmoke

clYellow

clYellowGreen

Подпрограммы для работы с пером

Рисование линий осуществляется текущим пером. Доступ к свойствам текущего пера можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.

Процедуры и функции для доступа к свойствам пера сгруппированы парами: если Prop - имя свойства пера, то функция PenProp возвращает значение этого свойства, а процедура SetPenProp(p) устанавливает это свойство:

procedure SetPenColor(c: Color);

Устанавливает цвет текущего пера

function PenColor: Color;

Возвращает цвет текущего пера

procedure SetPenWidth(Width: integer);

Устанавливает ширину текущего пера

function PenWidth: integer;

Возвращает ширину текущего пера

procedure SetPenStyle(style: DashStyle);

Устанавливает стиль текущего пера. Константы стилей пера приведены здесь

function PenStyle: DashStyle;

Возвращает стиль текущего пера. Константы стилей пера приведены здесь

procedure SetPenMode(m: integer);

Устанавливает режим текущего пера

function PenMode: integer;

Возвращает режим текущего пера

function PenX: integer;

Возвращают x-координату текущей позиции рисования

function PenY: integer;

Возвращают y-координату текущей позиции рисования

Кроме этого, можно изменять свойства текущего пера через объект Pen.

Текущее перо Pen

Объект текущего пера возвращается функцией Pen и имеет тип GraphABCPen:

function Pen: GraphABCPen;

Класс GraphABCPen имеет следующий интерфейс:

type

GraphABCPen = class

property NETPen: System.Drawing.Pen;

property Color: GraphABC.Color;

property Width: integer;

property Style: DashStyle;

property Mode: integer;

property X: integer;

property Y: integer;

end;

Свойства класса GraphABCPen описаны в следующей таблице:

property NETPen: System.Drawing.Pen;

Текущее перо .NET. Служит для более тонкой настройки свойств пера

property Color: GraphABC.Color;

Цвет пера

property Width: integer;

Ширина пера

property Style: DashStyle;

Стиль пера. Константы стилей пера приведены здесь

property Mode: integer;

Режим пера

property X: integer;

Координата X пера (только чтение)

property Y: integer;

Координата Y пера (только чтение)

Пример.

Pen.Color := clRed;

Pen.Style := psDot;

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

Стили пера

Стили пера задаются перечислимым типом DashStyle. Кроме того, для стилей пера определены следующие константы:

psSolid = DashStyle.Solid;

Сплошное перо

psClear = DashStyle.Clear;

Прозрачное перо

psDash = DashStyle.Dash;

Штриховое перо

psDot = DashStyle.Dot;

Пунктирное перо

psDashDot = DashStyle.DashDot;

Штрихунктирное перо

psDashDotDot = DashStyle.DashDotDot;

Альтернативное штрихунктирное перо

Подпрограммы для работы с кистью

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

Процедуры и функции для доступа к свойствам кисти сгруппированы парами: если Prop - имя свойства кисти, то функция PenProp возвращает значение этого свойства, а процедура SetPenProp(p) устанавливает это свойство:

procedure SetBrushColor(c: Color);

Устанавливает цвет текущей кисти

function BrushColor: Color;

Возвращает цвет текущей кисти

procedure SetBrushStyle(bs: BrushStyleType);

Устанавливает стиль текущей кисти. Константы стилей кисти приведены здесь

function BrushStyle: BrushStyleType;

Возвращает стиль текущей кисти. Константы стилей кисти приведены здесь

procedure SetBrushHatch(bh: HatchStyle);

Устанавливает штриховку текущей кисти. Константы стилей штриховки кисти приведены здесь

function BrushHatch: HatchStyle;

Возвращает штриховку текущей кисти. Константы стилей штриховки кисти приведены здесь

procedure SetHatchBrushBackgroundColor(c: Color);

Устанавливает цвет заднего плана текущей штриховой кисти

function HatchBrushBackgroundColor: Color;

Возвращает цвет заднего плана текущей штриховой кисти

procedure SetGradientBrushSecondColor(c: Color);

Устанавливает второй цвет текущей градиентной кисти

function GradientBrushSecondColor: Color;

Возвращает второй цвет текущей градиентной кисти

Кроме этого, можно изменять свойства текущей кисти через объект Brush.

Текущая графическая кисть Brush

Объект текущей кисти возвращается функцией Brush и имеет тип GraphABCBrush:

function Brush: GraphABCBrush;

Класс GraphABCBrush имеет следующий интерфейс:

type

GraphABCBrush = class

property NETBrush: System.Drawing.Brush;

property Color: GraphABC.Color;

property Style: BrushStyleType;

property Hatch: HatchStyle;

property HatchBackgroundColor: GraphABC.Color;

property GradientSecondColor: GraphABC.Color;

end;

Свойства класса GraphABCBrush описаны в следующей таблице:

property NETBrush: System.Drawing.Brush;

Текущая кисть .NET

property Color: GraphABC.Color;

Цвет кисти

property Style: BrushStyleType;

Стиль кисти

property Hatch: HatchStyle;

Штриховка кисти

property HatchBackgroundColor: GraphABC.Color;

Цвет заднего плана штриховой кисти

property GradientSecondColor: GraphABC.Color;

Второй цвет градиентной кисти

Пример.

Brush.Color := clRed;

Brush.Style := bsHatch;

Brush.Hatch := bhBackwardDiagonal;

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

Стили кисти

Стили кисти задаются перечислимым типом BrushStyleType:

type BrushStyleType = (bsSolid, bsClear, bsHatch, bsGradient);

Константы имеют следующий смысл:

bsSolid

Сплошная кисть (по умолчанию)

bsClear

Прозрачная кисть

bsHatch

Штриховая кисть

bsGradient

Градиентная кисть

Для всех кистей используется свойство Color. Для штриховой кисти дополнительно можно устанавливать свойства Hatch и HatchBackgroundColor, для градиентной - свойство GradientSecondColor.

Стили штриховки кисти

Стили штриховки кисти задаются перечислимым типом HatchStyle. Кроме того, для стилей штриховки кисти определены следующие константы:

bhHorizontal

bhVertical

bhForwardDiagonal

bhBackwardDiagonal

bhCross

bhDiagonalCross

bhPercent05

bhPercent10

bhPercent20

bhPercent25

bhPercent30

bhPercent40

bhPercent50

bhPercent60

bhPercent70

bhPercent75

bhPercent80

bhPercent90

bhLightDownwardDiagonal

bhLightUpwardDiagonal

bhDarkDownwardDiagonal

bhDarkUpwardDiagonal

bhWideDownwardDiagonal

bhWideUpwardDiagonal

bhLightVertical

bhLightHorizontal

bhNarrowVertical

bhNarrowHorizontal

bhDarkVertical

bhDarkHorizontal

bhDashedDownwardDiagonal

bhDashedUpwardDiagonal

bhDashedHorizontal

bhDashedVertical

bhSmallConfetti

bhLargeConfetti

bhZigZag

bhWave

bhDiagonalBrick

bhHorizontalBrick

bhWeave

bhPlaid

bhDivot

bhDottedGrid

bhDottedDiamond

bhShingle

bhTrellis

bhSphere

bhSmallGrid

bhSmallCheckerBoard

bhLargeCheckerBoard

bhOutlinedDiamond

bhSolidDiamond

bhMin

bhLargeGrid

bhMax

Подпрограммы для работы со шрифтом

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

Процедуры и функции для доступа к свойствам шрифта сгруппированы парами: если Prop - имя свойства пера, то функция PenProp возвращает значение этого свойства, а процедура SetPenProp(p) устанавливает это свойство:

procedure SetFontSize(size: integer);

Устанавливает размер текущего шрифта в пунктах

function FontSize: integer;

Возвращает размер текущего шрифта в пунктах

procedure SetFontName(name: string);

Устанавливает имя текущего шрифта

function FontName: string;

Возвращает имя текущего шрифта

procedure SetFontColor(c: Color);

Устанавливает цвет текущего шрифта

function FontColor: Color;

Возвращает цвет текущего шрифта

procedure SetFontStyle(fs: integer);

Устанавливает стиль текущего шрифта

function FontStyle: integer;

Возвращает стиль текущего шрифта

Можно также изменять свойства текущего пера через объект Font.

Кроме того, для определения ширины и высоты строки при текущих настройках шрифта используются следующие функции:

function TextWidth(s: string): integer;

Возвращает ширину строки s в пикселях при текущих настройках шрифта

function TextHeight(s: string): integer;

Возвращает высоту строки s в пикселях при текущих настройках шрифта

Текущий шрифт Font

Объект текущего шрифта возвращается функцией Font и имеет тип GraphABCFont:

function Font: GraphABCFont;

Класс GraphABCFont имеет следующий интерфейс: Кроме этого, можно изменять свойства текущего пера через объект Font.

type

GraphABCFont = class

property NETFont: System.Drawing.Font;

property Color: GraphABC.Color;

property Style: integer;

property Size: integer;

property Name: string;

end;

Свойства класса GraphABCFont описаны в следующей таблице:

property NETFont: System.Drawing.Font;

Текущий шрифт .NET

property Color: GraphABC.Color;

Цвет шрифта

property Style: FontStyleType;

Стиль шрифта

property Size: integer;

Размер шрифта в пунктах

property Name: string;

Наименование шрифта

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

Стили шрифта

Стиль шрифта задается перечислимым типом FontStyleType, который содержит следующие константы:

fsNormal – обычный;

fsBold – жирный;

fsItalic – наклонный;

fsBoldItalic – жирный наклонный;

fsUnderline – подчеркнутый;

fsBoldUnderline – жирный подчеркнутый;

fsItalicUnderline – наклонный подчеркнутый;

fsBoldItalicUnderline – жирный наклонный подчеркнутый.

Класс Picture графического рисунка

Класс Picture представляет собой графический рисунок модуля GraphABC и является надстройкой над типом System.Drawing.Bitmap. Он имеет свойство прозрачности, которое можно включать/выключать, а также возможность непосредственного рисования на себе всех графических примитивов.

Конструкторы класса Picture

constructor Create(w,h: integer);

Создает рисунок размера w на h пикселей

constructor Create(fname: string);

Создает рисунок из файла с именем fname

constructor Create(r: System.Drawing.Rectangle);

Создает рисунок из прямоугольника r графического окна

Свойства класса Picture

property Width: integer;

Ширина рисунка в пикселах

property Height: integer;

Высота рисунка в пикселах

property Transparent: boolean;

Прозрачность рисунка; прозрачный цвет задается свойством TransparentColor

property TransparentColor: Color;

Прозрачный цвет рисунка. Должна быть установлена прозрачность Transparent = True

Методы класса Picture

procedure Load(fname: string);

Загружает рисунок из файла с именем fname

procedure Save(fname: string);

Сохраняет рисунок в файл с именем fname

procedure SetSize(w,h: integer);

Устанавливает размер рисунка w на h пикселей

function Intersect(p: Picture): boolean;

Возвращает True, если изображение данного рисунка пересекается с изображением рисунка p, и False в противном случае. Для проверки пересечения оба объекта рисуются на белом фоне, и прямоугольник пересечения попиксельно проверяется на пересечение. К сожалению, при таком алгоритме любые белые пиксели считаются не принадлежащими объекту. Поэтому для корректной работы этого метода не следует использовать белый цвет для внутренности объекта.

procedure Draw(x,y: integer);

Выводит рисунок в позиции (x,y)

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

Выводит рисунок в позиции (x,y) на поверхность рисования g

procedure Draw(x,y,w,h: integer);

Выводит рисунок в позиции (x,y), масштабируя его к размеру (w,h)

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

Выводит рисунок в позиции (x,y), масштабируя его к размеру (w,h), на поверхность рисования g

procedure Draw(x,y: integer; r: System.Drawing.Rectangle); // r - part of Picture

Выводит часть рисунка, заключенную в прямоугольнике r, в позиции (x,y)

procedure Draw(x,y: integer; r: System.Drawing.Rectangle; g: Graphics);

Выводит часть рисунка, заключенную в прямоугольнике r, в позиции (x,y) на поверхность рисования g

procedure Draw(x,y,w,h: integer; r: System.Drawing.Rectangle); // r - part of Picture

Выводит часть рисунка, заключенную в прямоугольнике r, в позиции (x,y), масштабируя его к размеру (w,h)

procedure Draw(x,y,w,h: integer; r: System.Drawing.Rectangle; g: Graphics);

Выводит часть рисунка, заключенную в прямоугольнике r, в позиции (x,y), масштабируя его к размеру (w,h), на поверхность рисования g

procedure CopyRect(dst: System.Drawing.Rectangle; p: Picture; src: System.Drawing.Rectangle);

Копирует прямоугольник src рисунка p в прямоугольник dst текущего рисунка

procedure CopyRect(dst: System.Drawing.Rectangle; bmp: Bitmap; src: System.Drawing.Rectangle);

Копирует прямоугольник src битового образа bmp в прямоугольник dst текущего рисунка

procedure FlipHorizontal;

Зеркально отображает рисунок относительно горизонтальной оси симметрии

procedure FlipVertical;

Зеркально отображает рисунок относительно вертикальной оси симметрии

procedure SetPixel(x,y: integer; c: Color);

Закрашивает пиксел (x,y) рисунка цветом c

procedure PutPixel(x,y: integer; c: Color);

Закрашивает пиксел (x,y) рисунка цветом c

function GetPixel(x,y: integer): Color;

Возвращает цвет пиксела (x,y) рисунка

procedure Line(x1,y1,x2,y2: integer);

Выводит на рисунке отрезок от точки (x1,y1) до точки (x2,y2)

procedure Line(x1,y1,x2,y2: integer; c: Color);

Выводит на рисунке отрезок от точки (x1,y1) до точки (x2,y2) цветом c

procedure FillCircle(x,y,r: integer);

Заполняет на рисунке внутренность окружности с центром (x,y) и радиусом r

procedure DrawCircle(x,y,r: integer);

Выводит на рисунке окружность с центром (x,y) и радиусом r

procedure FillEllipse(x1,y1,x2,y2: integer);

Заполняет на рисунке внутренность эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawEllipse(x1,y1,x2,y2: integer);

Выводит на рисунке границу эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure FillRectangle(x1,y1,x2,y2: integer);

Заполняет на рисунке внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure FillRect(x1,y1,x2,y2: integer);

Заполняет на рисунке внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawRectangle(x1,y1,x2,y2: integer);

Выводит на рисунке границу ы прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure Circle(x,y,r: integer);

Выводит на рисунке заполненную окружность с центром (x,y) и радиусом r

procedure Ellipse(x1,y1,x2,y2: integer);

Выводит на рисунке заполненный эллипс, ограниченный прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure Rectangle(x1,y1,x2,y2: integer);

Выводит на рисунке заполненный прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2)

procedure RoundRect(x1,y1,x2,y2,w,h: integer);

Выводит на рисунке заполненный прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев

procedure Arc(x,y,r,a1,a2: integer);

Выводит на рисунке дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure FillPie(x,y,r,a1,a2: integer);

Заполняет на рисунке внутренность сектора окружности, ограниченного дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure DrawPie(x,y,r,a1,a2: integer);

Выводит на рисунке сектор окружности, ограниченный дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure Pie(x,y,r,a1,a2: integer);

Выводит на рисунке заполненный сектор окружности, ограниченный дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)

procedure DrawPolygon(points: arrayof Point);

Выводит на рисунке замкнутую ломаную по точкам, координаты которых заданы в массиве points

procedure FillPolygon(points: arrayof Point);

Заполняет на рисунке многоугольник, координаты вершин которого заданы в массиве points

procedure Polygon(points: arrayof Point);

Выводит на рисунке заполненный многоугольник, координаты вершин которого заданы в массиве points

procedure Polyline(points: arrayof Point);

Выводит на рисунке ломаную по точкам, координаты которых заданы в массиве points

procedure Curve(points: arrayof Point);

Выводит на рисунке кривую по точкам, координаты которых заданы в массиве points

procedure DrawClosedCurve(points: arrayof Point);

Выводит на рисунке замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure FillClosedCurve(points: arrayof Point);

Заполняет на рисунке замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure ClosedCurve(points: arrayof Point);

Выводит на рисунке заполненную замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure TextOut(x,y: integer; s: string);

Выводит на рисунке строку s в прямоугольник к координатами левого верхнего угла (x,y)

procedure FloodFill(x,y: integer; c: Color);

Заливает на рисунке область одного цвета цветом c, начиная с точки (x,y).

procedure Clear;

Очищает рисунок белым цветом

procedure Clear(c: Color);

Очищает рисунок цветом c

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

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

Процедуры и функции для доступа к свойствам окна сгруппированы парами: если Prop - имя свойства кисти, то функция PenProp возвращает значение этого свойства, а процедура SetPenProp(p) устанавливает это свойство:

function WindowWidth: integer;

Возвращает ширину клиентской части графического окна в пикселах

function WindowHeight: integer;

Возвращает высоту клиентской части графического окна в пикселах

function WindowLeft: integer;

Возвращает отступ графического окна от левого края экрана в пикселах

function WindowTop: integer;

Возвращает отступ графического окна от верхнего края экрана в пикселах

function WindowIsFixedSize: boolean;

Возвращает True, если графическое окно имеет фиксированный размер, и False в противном случае

procedure SetWindowWidth(w: integer);

Устанавливает ширину клиентской части графического окна в пикселах

procedure SetWindowHeight(h: integer);

Устанавливает высоту клиентской части графического окна в пикселах

procedure SetWindowLeft(l: integer);

Устанавливает отступ графического окна от левого края экрана в пикселах

procedure SetWindowTop(t: integer);

Устанавливает отступ графического окна от верхнего края экрана в пикселах

procedure SetWindowIsFixedSize(b: boolean);

Устанавливает, имеет ли графическое окно фиксированный размер

function WindowCaption: string;

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

function WindowTitle: string;

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

procedure SetWindowCaption(s: string);

Устанавливает заголовок графического окна

procedure SetWindowTitle(s: string);

Устанавливает заголовок графического окна

procedure SetWindowSize(w,h: integer);

Устанавливает размеры клиентской части графического окна в пикселах

procedure SetWindowPos(l,t: integer);

Устанавливает отступ графического окна от левого верхнего края экрана в пикселах

procedure ClearWindow;

Очищает графическое окно белым цветом

procedure ClearWindow(c: Color);

Очищает графическое окно цветом c

procedure InitWindow(Left,Top,Width,Height: integer; BackColor: Color := clWhite);

Устанавливает ширину и высоту клиентской части графического окна в пикселах

procedure SaveWindow(fname: string);

Сохраняет содержимое графического окна в файл с именем fname

procedure LoadWindow(fname: string);

Восстанавливает содержимое графического окна из файла с именем fname

procedure FillWindow(fname: string);

Заполняет содержимое графического окна обоями из файла с именем fname

procedure CloseWindow;

Закрывает графическое окно и завершает приложение

procedure CenterWindow;

Центрирует графическое окно по центру экрана

function WindowCenter: Point;

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

procedure MaximizeWindow;

Максимизирует графическое окно

procedure MinimizeWindow;

Сворачивает графическое окно

procedure NormalizeWindow;

Возвращает графическое окно к нормальному размеру


Кроме того, можно возвращать размеры экрана Screen, а также размеры и положение графического компонента GraphBox, на котором осуществляется рисование: function GraphBoxWidth: integer;

Возвращает ширину графического компонента в пикселах (по умолчанию совпадает с WindowWidth)

function GraphBoxHeight: integer;

Возвращает высоту графического компонента в пикселах (по умолчанию совпадает с WindowHeight)

function GraphBoxLeft: integer;

Возвращает отступ графического компонента от левого края окна в пикселах

function GraphBoxTop: integer;

Возвращает отступ графического компонента от верхнего края окна в пикселах

function ScreenWidth: integer;

Возвращает ширину экрана в пикселях

function ScreenHeight: integer;

Возвращает высоту экрана в пикселях

Можно также изменять свойства графического окна через объект Window.

Класс GraphABCWindow графического окна

Класс GraphABCWindow представляет собой графическое окно. Функция

function Window: GraphABCWindow;

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

Свойства класса GraphABCWindow

property Left: integer;

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

property Top: integer;

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

property Width: integer;

Ширина клиентской части графического окна в пикселах

property Height: integer;

Высота клиентской части графического окна в пикселах

property Caption: string;

Заголовок графического окна

property Title: string;

Заголовок графического окна

property IsFixedSize: boolean;

Имеет ли графическое окно фиксированный размер

Методы класса GraphABCWindow

procedure Clear;

Очищает графическое окно белым цветом

procedure Clear(c: Color);

Очищает графическое окно цветом c

procedure SetSize(w,h: integer);

Устанавливает размеры клиентской части графического окна в пикселах

procedure SetPos(l,t: integer);

Устанавливает отступ графического окна от левого верхнего края экрана в пикселах

procedure Init(Left,Top,Width,Height: integer; BackColor: Color := clWhite);

Устанавливает положение, размеры и цвет графического окна

procedure Save(fname: string);

Сохраняет содержимое графического окна в файл с именем fname

procedure Load(fname: string);

Восстанавливает содержимое графического окна из файла с именем fname

procedure Fill(fname: string);

Заполняет содержимое графического окна обоями из файла с именем fname

procedure Close;

Закрывает графическое окно и завершает приложение

procedure Minimize;

Сворачивает графическое окно

procedure Maximize;

Максимизирует графическое окно

procedure Normalize;

Возвращает графическое окно к нормальному размеру

procedure CenterOnScreen;

Центрирует графическое окно по центру экрана

function Center: Point;

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

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

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

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

Процедуры и функции для изменения системы координат окна приведены ниже:

procedure SetCoordinateOrigin(x0,y0: integer);

Устанавливает начало координат в точку (x0,y0)

procedure SetCoordinateScale(sx,sy: real);

Устанавливает масштаб системы координат

procedure SetCoordinateAngle(a: real);

Устанавливает поворот системы координат


Можно также изменять свойства системы координат графического окна через объект Coordinate.

Класс GraphABCCoordinate графического окна

Объект текущей системы координат возвращается функцией Coordinate и имеет тип GraphABCCoordinate:

function Coordinate: GraphABCCoordinate;

Класс GraphABCCoordinate представляет тип системы координат для графического окна.

Свойства класса GraphABCCoordinate

property OriginX: integer;

X-координата начала координат относительно левого верхнего угла окна

property OriginY: integer;

Y-координата начала координат относительно левого верхнего угла окна

property Origin: Point;

Координаты начала координат относительно левого верхнего угла окна

property Angle: real;

Угол поворота системы координат

property ScaleX: real;

Масштаб системы координат по оси X

property ScaleY: real;

Масштаб системы координат по оси Y

property Scale: real;

Масштаб системы координат по обоим осям

property Matrix: System.Drawing.Drawing2D.Matrix;

Матрица 3x3 преобразований координат

Методы класса GraphABCCoordinate

procedure SetTransform(x0,y0,angle,sx,sy: real);

Устанавливает параметры системы координат

procedure SetOrigin(x0,y0: integer);

Устанавливает начало системы координат

procedure SetScale(sx,sy: real);

Устанавливает масштаб системы координат

procedure SetScale(scale: real);

Устанавливает масштаб системы координат

procedure SetMathematic;

Устанавливает правую систему координат (ось OY направлена вверх, ось OX - вправо)

procedure SetStandard;

Устанавливает левую систему координат (ось OY направлена вниз, ось OX - вправо)

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

Подпрограммы блокировки рисования

procedure Redraw;

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

procedure LockDrawing;

Блокирует рисование на графическом окне. Перерисовка графического окна выполняется с помощью Redraw

procedure UnlockDrawing;

Снимает блокировку рисования на графическом окне и осуществляет его перерисовку


Блокировка вывода в графическое окно LockDrawing с последующим вызовом Redraw используется для простейшего создания анимации без мерцания.

Пример. Анимация без мерцания

Подпрограммы режимов рисования

procedure SetSmoothing(sm: boolean);

Устанавливает режим сглаживания

procedure SetSmoothingOn;

Включает режим сглаживания

procedure SetSmoothingOff;

Выключает режим сглаживания

function SmoothingIsOn: boolean;

Возвращает True, если режим сглаживания установлен

procedure SetCoordinateOrigin(x0,y0: integer);

Устанавливает начало координат в точку (x0,y0)

События модуля GraphABC

Графическая программа продолжает выполняться даже после того как выполнены все операторы основной программы. Графическое окно реагирует на события мыши, клавиатуры, событие изменения размеров окна и событие закрытия окна. Данные события определены в модуле GraphABC и представляют собой процедурные переменные:

OnMouseDown: procedure (x,y,mousebutton: integer);

Событие нажатия на кнопку мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши

OnMouseUp: procedure (x,y,mousebutton: integer);

Событие отжатия кнопки мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 1, если отжата левая кнопка мыши, и 2, если отжата правая кнопка мыши

OnMouseMove: procedure (x,y,mousebutton: integer);

Событие перемещения мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 0, если кнопка мыши не нажата, 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши.

OnKeyDown: procedure (key: integer);

Событие нажатия клавиши. key - виртуальный код нажатой клавиши

OnKeyUp: procedure (key: integer);

Событие отжатия клавиши. key - виртуальный код отжатой клавиши

OnKeyPress: procedure (ch: char);

Событие нажатия символьной клавиши. ch - символ, генерируемый нажатой символьной клавишей

OnResize: procedure;

Событие изменения размера графического окна

OnClose: procedure;

Событие закрытия графического окна

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

Параметры x и y в обработчиках OnMouseDown, OnMouseUp и OnMouseMove определяют координаты курсора мыши в момент наступления события, параметр mousebutton равен 0, если кнопка мыши не нажата, 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши. Параметр key в обработчиках OnKeyDown и OnKeyUp определяет виртуальный код нажатой клавиши. Параметр ch в обработчике OnKeyPress определяет нажатый символ.

Пример 1. Рисование мышью в окне.

Пример 2. Перемещение окна с помощью клавиатуры.

Виртуальные коды клавиш

VK_Left

VK_Up

VK_Right

VK_Down

VK_PageUp

VK_PageDown

VK_Prior

VK_Next

VK_Home

VK_End

VK_Insert

VK_Delete

VK_Enter

VK_Return

VK_Back

VK_Tab

VK_ShiftKey

VK_ControlKey

VK_F1

VK_F2

VK_F3

VK_F4

VK_F5

VK_F6

VK_F7

VK_F8

VK_F9

VK_F10

VK_F11

VK_F12

VK_Menu

VK_Pause

VK_CapsLock

VK_Capital

VK_PrintScreen

VK_Help

VK_Space

VK_A

VK_B

VK_C

VK_D

VK_E

VK_F

VK_G

VK_H

VK_I

VK_J

VK_K

VK_L

VK_M

VK_N

VK_O

VK_P

VK_Q

VK_R

VK_S

VK_T

VK_U

VK_V

VK_W

VK_X

VK_Y

VK_Z

VK_LWin

VK_RWin

VK_Apps

VK_Sleep

VK_LineFeed

VK_NumPad0

VK_NumPad1

VK_NumPad2

VK_NumPad3

VK_NumPad4

VK_NumPad5

VK_NumPad6

VK_NumPad7

VK_NumPad8

VK_NumPad9

VK_Multiply

VK_Add

VK_Separator

VK_Subtract

VK_Decimal

VK_Divide

VK_NumLock

VK_Scroll

VK_LShiftKey

VK_RShiftKey

VK_LControlKey

VK_RControlKey

VK_LMenu

VK_RMenu

VK_KeyCode

VK_Shift

VK_Control

VK_Alt

VK_Modifiers

VK_Select

VK_Print

VK_Snapshot

Модуль ABCObjects

Модуль ABCObjects: обзор

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

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

На основе модуля ABCObjects созданы модули ABCSprites, ABCButtons, ABCChessObjects, ABCHouse, ABCRobots, ABCAdditionalObjects.

Следующие темы помогут изучить возможности модуля ABCObjects:

ABCObjects: быстрое введение

Диаграмма классов ABCObjects

Классы ObjectABC, BoundedObjectABC

Классы RectangleABC, SquareABC, EllipseABC, CircleABC, RoundRectABC, RoundSquareABC, TextABC

Классы RegularPolygonABC, StarABC

Классы PictureABC, MultiPictureABC

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

Классы BoardABC, ObectBoardABC

Массив графических объектов Objects

Класс ContainerABC

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

Переменные, процедуры и функции модуля ABCObjects

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

Совмещение графического вывода модулей ABCObjects и GraphABC

Диаграмма классов

На рисунке приведена диаграмма классов модуля ABCObjects.

Класс SpriteABC описан в модуле ABCSprites, однако, приведен на диаграмме как один из важнейших.

Класс ObjectABC

Класс ObjectABC является базовым классом для всех графических объектов ABCObjects. Его основными потомками, определенными в модуле ABCObjects, являются следующие классы: BoundedObjectABC, RectangleABC, SquareABC, EllipseABC, CircleABC, TextABC, RegularPolygonABC, StarABC, PictureABC, MultiPictureABC, BoardABC и ContainerABC. Класс ObjectABC - абстрактный: объекты этого класса не создаются.

Конструкторы класса ObjectABC

constructor Create(x,y,w,h: integer; cl: GColor);

Создает графический объект размера (w, h) цвета cl с координатами левого верхнего угла (x, y)

constructor Create(g: ObjectABC);

Создает графический объект - копию объекта g

Свойства класса 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; virtual;

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

procedure Scale(f: real); virtual;

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

procedure ToFront;

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

procedure ToBack;

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

function Bounds: System.Drawing.Rectangle;

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

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

Возвращает 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; virtual;

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

function Clone: ObjectABC;

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

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

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

destructor Destroy;

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

Класс BoundedObjectABC

Класс BoundedObjectABC является непосредственным потомком класса ObjectABC и базовым классом для всех замкнутых графических объектов. Его основными потомками являются следующие классы: RectangleABC, SquareABC, EllipseABC, CircleABC, RegularPolygonABC, StarABC, BoardABC. Класс BoundedObjectABC - абстрактный: объекты этого класса не создаются.

Свойства класса BoundedObjectABC

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс RectangleABC

Класс RectangleABC является потомком класса BoundedObjectABC и представляет графический объект Прямоугольник.

Конструкторы класса RectangleABC

constructor Create(x,y,w,h: integer; cl: GColor);

Создает прямоугольник размера (w,h) цвета cl с координатами левого верхнего угла (x,y)

constructor Create(g: RectangleABC);

Создает прямоугольник - копию прямоугольника g

Методы класса RectangleABC

function Clone: RectangleABC;

Возвращает клон прямоугольника

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс SquareABC

Класс SquareABC является потомком класса RectangleABC и представляет графический объект Квадрат.

Конструкторы класса SquareABC

constructor Create(x,y,w: integer; cl: GColor);

Создает квадрат размера w цвета cl с координатами левого верхнего угла (x,y)

constructor Create(g: SquareABC);

Создает квадрат - копию квадрата g

Методы класса SquareABC

function Clone: SquareABC;

Возвращает клон квадрата

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс EllipseABC

Класс EllipseABC является потомком класса BoundedObjectABC и представляет графический объект Эллипс. Большинство свойств и методов унаследовано от классов ObjectABC и BoundedObjectABC.

Конструкторы класса EllipseABC

constructor Create(x,y,w,h: integer; cl: GColor);

Создает эллипс размера (w, h) цвета cl с координатами левого верхнего угла (x, y)

constructor Create(g: EllipseABC);

Создает эллипс - копию эллипса g

Методы класса EllipseABC

function Clone: EllipseABC;

Возвращает клон эллипса

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс CircleABC

Класс CircleABC является потомком класса EllipseABC и представляет графический объект Круг. Большинство свойств и методов унаследовано от классов ObjectABC и BoundedObjectABC.

Конструкторы класса CircleABC

constructor Create(x,y,r: integer; cl: GColor);

Создает круг радиуса r цвета cl с координатами центра (x,y)

constructor Create(g: CircleABC);

Создает круг - копию круга g

procedure Scale(f: real);

Масштабирует круг в f раз (f>1 - увеличение, 0function Clone: CircleABC;

Возвращает клон круга

Свойства класса CircleABC

property Radius: integer;

Радиус круга

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс RoundRectABC

Класс RoundRectABC является потомком класса BoundedObjectABC и представляет графический объект Прямоугольник со скругленными краями.

Конструкторы класса RoundRectABC

constructor Create(x,y,w,h,rr: integer; cl: GColor);

Создает прямоугольник со скругленными краями размера (w,h), цветом cl, радиусом скругления r и координатами левого верхнего угла (x,y)

constructor Create(g: RoundRectABC);

Создает прямоугольник со скругленными краями - копию прямоугольника со скругленными краями g

Свойства класса RoundRectABC

property Radius: integer;

Радиус скругления углов

Методы класса RoundRectABC

function Clone: RoundRectABC;

Возвращает клон прямоугольника со скругленными краями

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс RoundSquareABC

Класс RoundSquareABC является потомком класса RoundRectABC и представляет графический объект Квадрат со скругленными краями.

Конструкторы класса RoundSquareABC

constructor Create(x,y,w,r: integer; cl: GColor);

Создает квадрат со скругленными краями размера w, цвета cl с радиусом скругления r и координатами левого верхнего угла (x, y)

constructor Create(g: RoundSquareABC);

Создает квадрат со скругленными краями - копию квадрата со скругленными краями g

Методы класса RoundSquareABC

function Clone: RoundSquareABC;

Возвращает клон квадрата со скругленными краями

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс TextABC

Класс TextABC является потомком класса ObjectABC и представляет графический объект Текст.

Конструкторы класса TextABC

constructor Create(x,y,pt: integer; cl: GColor; txt: string);

Создает текстовый объект с текстом txt размера pt пунктов, цветом cl и координатами левого верхнего угла (x,y)

constructor Create(g: TextABC);

Создает текстовый объект - копию текстового объекта g

Свойства класса TextABC

property FontSize: integer;

Размер шрифта в пунктах

property TransparentBackground: boolean;

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

property BackgroundColor: GColor;

Цвет фона текстового объекта

Методы класса TextABC

function Clone: TextABC;

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

Свойства, унаследованные от класса 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

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;

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

Класс RegularPolygonABC

Класс RegularPolygonABC является потомком класса BoundedObjectABC и представляет графический объект Правильный многоугольник.

Конструкторы класса RegularPolygonABC

constructor Create(x,y,r,n: integer; cl: GColor);

Создает правильный многоугольник с n вершинами, радиусом r, цветом cl и координатами центра (x, y)

constructor Create(g: RegularPolygonABC);

Создает правильный многоугольник - копию правильного многоугольника g

Свойства класса RegularPolygonABC

property Count: integer;

Количество вершин правильного многоугольника

property Radius: integer;

Радиус многоугольника

property Angle: real;

Угол поворота (в градусах)

Методы класса RegularPolygonABC

function Clone: RegularPolygonABC;

Возвращает клон правильного многоугольника

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс StarABC

Класс StarABC является потомком класса RegularPolygonABC и представляет графический объект Правильная звезда.

Конструкторы класса StarABC

constructor Create(x,y,r,r1,nn: integer; cl: GColor);

Создает звезду с nn вершинами, радиусом r, внутренним радиусом r1, цветом cl и координатами центра (x,y)

constructor Create(g: StarABC);

Создает звезду - копию звезды g

Свойства класса SquareABC

property InternalRadius: integer;

Внутренний радиус

Методы класса SquareABC

function Clone: StarABC;

Возвращает клон звезды

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс PictureABC

Класс PictureABC является потомком класса ObjectABC и представляет графический объект Рисунок.

Конструкторы класса PictureABC

constructor Create(x,y: integer; fname: string);

Создает рисунок с координатами левого верхнего угла (x,y), считывая его из файла fname

constructor Create(x,y: integer; p: Picture);

Создает рисунок с координатами левого верхнего угла (x,y), считывая его из объекта p

constructor Create(g: PictureABC);

Создает рисунок - копию рисунка g

Свойства класса PictureABC

property Transparent: boolean;

Прозрачен ли рисунок

property TransparentColor: GColor;

Цвет, считающийся прозрачным

property ScaleX: real;

Масштаб рисунка по оси X относительно исходного изображения. При отрицательных значениях происходит зеркальное отражение относительно вертикальной оси

property ScaleY: real;

Масштаб рисунка по оси Y относительно исходного изображения. При отрицательных значениях происходит зеркальное отражение относительно вертикальной оси

Методы класса PictureABC

procedure ChangePicture(fname: string);

Меняет изображение рисунка, считывая его из файла fname

procedure ChangePicture(p: Picture);

Меняет изображение рисунка, считывая его из объекта p

procedure FlipVertical;

Зеркально отображает рисунок относительно вертикальной оси

procedure FlipHorizontal;

Зеркально отображает рисунок относительно горизонтальной оси

procedure Save(fname: string);

Сохраняет рисунок в файл fname

function Clone: PictureABC;

Возвращает клон рисунка

Свойства, унаследованные от класса 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

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

Класс MultiPictureABC является потомком класса PictureABC и представляет графический объект Набор рисунков, содержащий несколько изображений, одно из которых рисуется на экране.

Конструкторы класса MultiPictureABC

constructor Create(x,y: integer; fname: string);

Создает набор рисунков, состоящий из одного рисунка, загружая его из файла с именем fname. После создания рисунок отображается на экране в позиции (x,y). Остальные рисунки добавляются методом Add

constructor Create(x,y: integer; p: Picture);

Создает набор рисунков, состоящий из одного рисунка, хранящегося в переменной p. После создания рисунок отображается на экране в позиции (x,y). Остальные рисунки добавляются методом Add

constructor Create(x,y,w: integer; p: Picture);

Создает набор рисунков из объекта p типа Picture. Объект p должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w. Если ширина рисунка в объекте p не кратна w, то возникает исключение. После создания первый рисунок из набора отображается на экране в позиции (x,y)

constructor Create(x,y,w: integer; fname: string);

Создает набор рисунков, загружая его из файла fname. Файл должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w. Если ширина рисунка в файле fname не кратна w, то возникает исключение. После создания первый рисунок из набора отображается на экране в позиции (x,y)

constructor Create(g: MultiPictureABC);

Создает набор рисунков - копию набора рисунков g

Свойства класса MultiPictureABC

property CurrentPicture: integer;

Номер текущего рисунка

property Count: integer;

Количество рисунков в наборе

Методы класса MultiPictureABC

procedure Add(fname: string);

Добавляет рисунок к набору, загружая его из файла fname. Рисунок должен иметь те же размеры, что и все рисунки из набора

procedure ChangePicture(fname: string);

Меняет набор рисунков на набор, состоящий из одного рисунка, загружая его из файла с именем fname

procedure ChangePicture(w: integer; fname: string);

Меняет набор рисунков на набор, загружая его из файла с именем fname. Файл должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w

procedure NextPicture;

Циклически переходит к следующему рисунку из набора

procedure PrevPicture;

Циклически переходит к предыдующему рисунку из набора

function Clone: MultiPictureABC;

Возвращает клон набора рисунков

Свойства, унаследованные от класса 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

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;

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

Класс BoardABC

Класс BoardABC является потомком класса BoundedObjectABC и представляет графический объект Доска. Большинство свойств и методов унаследовано от классов ObjectABC и BoundedObjectABC.

Конструкторы класса BoardABC

constructor Create(x,y,nx,ny,szx,szy: integer; cl: GColor);

Создает доску nx на ny клеток цвета cl с размером клетки (szx,szy) в позиции (x,y).

constructor Create(g: BoardABC);

Создает доску - копию доски g

Свойства класса BoardABC

property DimX: integer;

Количество клеток доски по горизонтали

property DimY: integer;

Количество клеток доски по вертикали

property CellSizeX: integer;

Размер клетки по горизонтали

property CellSizeY: integer;

Размер клетки по вертикали

Методы класса BoardABC

function Clone: BoardABC;

Возвращает клон доски

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

property BorderColor: GColor;

Цвет границы

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

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;

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

Класс ObjectBoardABC

Класс ObjectBoardABC является потомком класса BoardABC и представляет графический объект Доска с объектами.

Конструкторы класса ObjectBoardABC

constructor Create(x,y,nx,ny,szx,szy: integer; cl: GColor);

Создает доску с объектами nx на ny клеток цвета cl с размером клетки (szx, szy) в позиции (x, y).

constructor Create(g: ObjectBoardABC);

Создает доску с объектами - копию доски g

Методы класса ObjectBoardABC

procedure DestroyObject(x,y: integer);

Удаляет объект в клетке с координатами (x, y)

property Items[x,y: integer]: ObjectABC read GetObject write SetObject; default;

Объект в клетке с координатами (x, y)

procedure SwapObjects(x1,y1,x2,y2: integer);

Меняет местами объекты в клетках с координатами (x1, y1) и (x2, y2)

function Clone: ObjectBoardABC;

Возвращает клон доски с объектами

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

property DimX: integer;

Количество клеток доски по горизонтали

property DimY: integer;

Количество клеток доски по вертикали

property CellSizeX: integer;

Размер клетки по горизонтали

property CellSizeY: integer;

Размер клетки по вертикали

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

property BorderColor: GColor;

Цвет границы

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

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;

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

p.Save('multipic.gif');

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

p := new MultiPictureABC(50,50,100,'multipic.gif');

Третий параметр здесь указывает ширину одного кадра.

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

Массив всех графических объектов Objects

В модуле ABCObjects определен динамический массив Objects, который хранит все созданные графические объекты. Он принадлежит к типу ObjectsABCArray, определенному в ABCObjects. Для массива Objects определены всего 2 операции: Objects.Count возвращает количество графических объектов, а Objects[i] возвращает i-тый графический объект (типа ObjectABC, нумерация осуществляется с 0).

Использование массива Objects позволяет единообразно обращаться ко всем графическим объектам, вызывая для них любые методы и обращаясь к любым свойствам класса ObjectABC.

Пример 1. Броуновское движение объектов.

uses ABCObjects;

var i:integer;

begin

for i:=1 to 30 do

new CircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);

while True do

for i:=0 to Objects.Count-1 do

Objects[i].MoveOn(Random(3)-1,Random(3)-1);

end.

В этом примере создается 30 объектов CircleABC. Поскольку все они сохраняются в массиве Objects, при их создании результат вызова конструктора не присваивается никакой переменной. После создания все объекты начинают перемещаться в бесконечном цикле на случайный вектор, совершая броуновское движение.

Пример 2. Изменение свойств объектов заданного типа.

uses ABCObjects;

var i:integer;

begin

for i:=1 to 30 do

case Random(2) of

0: new CircleABC(Random(WindowWidth),Random(WindowHeight),20,clRandom);

1: new RegularPolygonABC(Random(WindowWidth), Random(WindowHeight), 20, 3, clRandom);

end;

while True do

for i:=0 to Objects.Count-1 do

if Objects[i] is RegularPolygonABC then

RegularPolygonABC(Objects[i]).Angle := RegularPolygonABC(Objects[i]).Angle + 1;

end.

В этом примере создается 30 объектов CircleABC или RegularPolygonABC. Затем в бесконечном цикле вращаются только объекты RegularPolygonABC. Вращение достигается увеличением свойства Angle, которое определено только в классе RegularPolygonABC. Для установки принадлежности объекта к классу RegularPolygonABC используется операция is, после чего объект Objects[i] преобразуется к типу RegularPolygonABC при помощи операции приведения типа.

Пример 3. Удаление всех графических объектов, пересекшихся с объектом p:

for i:=Objects.Count-1 downto 0 do

if (Objects[i]<>p) and (p.Intersects(Objects[i]) then

Objects[i].Destroy;

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

Переменные, процедуры и функции модуля ABCObjects

procedure LockDrawingObjects;

Блокирует рисование графических объектов. Возможна лишь перерисовка всего экрана вместе со всеми графическими объектами на нем вызовом RedrawObjects

procedure UnLockDrawingObjects;

Разблокирует рисование графических объектов

procedure RedrawObjects;

Перерисовывает все графическое окно вместе со всеми графическими объектами на нем

procedure ToFront(g: ObjectABC);

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

procedure ToBack(g: ObjectABC);

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

function ObjectsCount: integer;

Количество графических объектов

function ObjectUnderPoint(x,y: integer): ObjectABC;

Графический объект под точкой (x, y)

function ObjectUnderPoint(p: Point): ObjectABC;

Графический объект под точкой p

procedure SwapPositions(o1,o2: ObjectABC);

Поменять позиции графических объектов o1 и o2

function UIElementUnderPoint(x,y: integer): UIElementABC;

Элемент управления ABCObject под точкой (x, y)

var Objects: ObjectsABCArray;

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

UIElementABC

Класс элемента управления ABCObject

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

Для обеспечения быстрой перерисовки используется следующий прием: в начале программы вызывается LockDrawingObjects, а при необходимости перерисовать весь экран – специальная процедура RedrawObjects. Отключается режим вызовом UnLockDrawingObjects.

При наличии большого количества объектов, каждый из которых движется, такой прием может ощутимо ускорить анимацию. Причина здесь кроется в следующем: по умолчанию при каждом движении объекта он перерисовывается в своем прямоугольнике, при этом в этом прямоугольнике перерисовываются все объекты. Если в графическом окне 100 объектов, и каждый из них переместился, то происходит 100*100=10000 перерисовок объектов. После вызова LockDrawingObjects перерисовки не происходит, а в результате вызова RedrawObjects каждый объект прорисовывается только один раз, то есть происходит всего 100 перерисовок объектов.

Следует обратить внимание, что в модуле GraphABC имеются родственные процедуры LockDrawing, UnLockDrawing, и Redraw. Однако, они отвечают за растровую перерисовку без мерцания, в то время как процедуры LockDrawingObjects, UnLockDrawingObjects, и RedrawObjects отвечают только за ускорение перерисовки векторной графики ABCObjects (отсутствие мерцания векторных объектов при их изменении обеспечивается автоматически).

Совмещение графического вывода модулей ABCObjects и GraphABC

Использование объектов ABCObjects можно совмещать с выводом в графическое окно с помощью процедур рисования модуля GraphABC. При этом, все объекты ABCObjects располагаются поверх изображения, нарисованного в графическом окне вызовом процедур рисования модуля GraphABC. Это можно использовать, например, для задания фоновой картинки, на которой затем можно размещать объекты ABCObjects:

FillWindow('aqua.jpg');

c := new CircleABC(100,100,50,clGreen);

RectangleABC(300,300,100,50,clBlue);

Следует иметь в виду, что прорисовка при изменении свойств объектов ABCObjects происходит корректно, но если рисовать вызовом процедур модуля GraphABC, то графические объекты ABCObjects будут затираться. Для восстановления картинки следует либо передвинуть объекты ABCObjects, либо вызвать процедуру RedrawObjects, перерисовывающую все графическое окно.

Модуль ABCSprites

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

1. Спрайты автоматически анимируются в цикле, что управляется специальным таймером. Можно регулировать скорость анимации каждого спрайта, а также останавливать/запускать все спрайты.

2. Спрайты могут иметь состояния, задаваемые строками. Каждое состояние имеет свой независимый набор кадров, меняющихся циклически. Например, игровой объект в состоянии Идти имеет три кадра, а в состоянии Сидеть - один кадр (в этом состоянии анимация отсутствует). Переключая состояния, можно моделировать различное поведение игрового объекта.

Кроме того, анимацию всех спрайтов можно выключить/включить вызовом следующих процедур:

procedure StartSprites;

Стартует анимацию всех спрайтов

procedure StopSprites;

Останавливает анимацию всех спрайтов

Класс SpriteABC

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

Конструкторы класса SpriteABC

constructor Create(x,y: integer; fname: string);

Создает спрайт, загружая его из файла с именем fname. Имя fname может быть либо именем графического файла, либо именем информационного файла спрайта с расширением .spinf. Если имя является именем графического файла, то создается спрайт с одним кадром. Остальные кадры добавляются методом Add. После этого при необходимости добавляются состояния методом AddStates и вызывается метод CheckStates. Если файл имеет расширение .spinf, то он содержит информацию о кадрах и состояниях спрайта и должен сопровождаться соответствующим графическим файлом. После создания спрайт отображается на экране в позиции (x,y)

constructor Create(x,y,w: integer; fname: string);

Создает спрайт, загружая его из файла fname. Файл должен хранить рисунок, представляющий собой последовательность кадров одного размера, расположенных по горизонтали. Каждый кадр считается имеющим ширину w. Если ширина рисунка в файле fname не кратна w, то возникает исключение. После этого при необходимости добавляются состояния методом AddStates и вызывается метод CheckStates После создания спрайт отображается на экране в позиции (x,y)

constructor Create(x,y,w: integer; p: Picture);

Создает спрайт, загружая его из объекта p: Picture. Он должен хранить рисунок, представляющий собой последовательность кадров одного размера, расположенных по горизонтали. Каждый кадр считается имеющим ширину w. Если ширина рисунка не кратна w, то возникает исключение. После этого при необходимости добавляются состояния методом AddStates и вызывается метод CheckStates. После создания спрайт отображается на экране в позиции (x,y)

constructor Create(g: SpriteABC);

Создает спрайт - копию спрайта g

Свойства класса SpriteABC

property StateName: string;

Имя состояния

property State: integer;

Номер состояния (от 1 до StateCount)

property StateCount: integer;

Количество состояний. Свойство доступно только на чтение

property Speed: integer;

Скорость спрайта (1..10)

property Active: boolean;

Активность спрайта: True, если спрайт активен (т.е. происходит его анимация), и False в противном случае

property Frame: integer;

Текущий кадр в текущем состоянии

Методы класса SpriteABC

procedure AddState(name: string; count: integer);

Добавляет состояние к спрайту. После добавления всех состояний следует вызвать CheckStates

procedure CheckStates;

Проверяет корректность набора состояний. Вызывается после добавления всех состояний

procedure SaveWithInfo(fname: string);

Сохраняет графический и информационный файлы спрайта. Имя fname задает имя графического файла. Информационный файл сохраняется в тот же каталог, что и графический, имеет то же имя и расширение .spinf

procedure NextFrame;

Переходит к следующему кадру в текущем состоянии

procedure NextTick;

Переходит к следующему тику таймера; если он равен ticks, то он сбрасывается в 1 и вызывается NextFrame

function FrameCount: integer;

Возвращает количество кадров в текущем состоянии

function FrameBeg: integer;

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

function Clone: SpriteABC;

Возвращает клон объекта

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

property CurrentPicture: integer;

Номер текущего рисунка

property Count: integer;

Количество рисунков в наборе

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

procedure Add(fname: string);

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

procedure ChangePicture(fname: string);

Меняет набор рисунков на набор, состоящий из одного рисунка, загружая его из файла с именем fname

procedure ChangePicture(w: integer; fname: string);

Меняет набор рисунков на набор, загружая его из файла с именем fname. Файл должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w

procedure NextPicture;

Циклически переходит к следующему рисунку из набора

procedure PrevPicture;

Циклически переходит к предыдующему рисунку из набора

function Clone: MultiPictureABC;

Возвращает клон набора рисунков

Свойства, унаследованные от класса 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

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;

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

Модуль Timers

Модуль Timers содержит класс Timer, позволяющий выполнять определенные действия через равные промежутки времени. В конструкторе класса Timer указывается промежуток времени и имя процедуры без параметров - обработчика события таймера, вызываемой через указанный промежуток времени.

Класс Timer имеет следующий интерфейс:

type

Timer = class

constructor (ms: integer; TimerProc: procedure);

procedure Start;

procedure Stop;

property Enabled: boolean read write;

property Interval: integer read write;

end;

Члены класса Timer описаны в следующей таблице:

constructor (ms: integer; TimerProc: procedure);

Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc, называемой обработчиком таймера. Созданный таймер необходимо запустить, вызвав метод Start

procedure Start;

Запускает таймер

procedure Stop;

Останавливаетает таймер

property Enabled: boolean read write;

Запущен ли таймер

property Interval: integer read write;

Промежуток времени между вызовами обработчика таймера

Пример использования таймера.

Средства обучения в PascalABC.NET