Модуль 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. Он имеет свойство прозрачности, которое можно включать/выключать, а также возможность непосредственного рисования на себе всех графических примитивов.
Конструкторы класса Pictureconstructor Create(w,h: integer);
Создает рисунок размера w на h пикселей
constructor Create(fname: string);
Создает рисунок из файла с именем fname
constructor Create(r: System.Drawing.Rectangle);
Создает рисунок из прямоугольника r графического окна
Свойства класса Pictureproperty Width: integer;
Ширина рисунка в пикселах
property Height: integer;
Высота рисунка в пикселах
property Transparent: boolean;
Прозрачность рисунка; прозрачный цвет задается свойством TransparentColor
property TransparentColor: Color;
Прозрачный цвет рисунка. Должна быть установлена прозрачность Transparent = True
Методы класса Pictureprocedure 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;
возвращает объект текущего графического окна.
Свойства класса GraphABCWindowproperty Left: integer;
Отступ графического окна от левого края экрана в пикселах
property Top: integer;
Отступ графического окна от верхнего края экрана в пикселах
property Width: integer;
Ширина клиентской части графического окна в пикселах
property Height: integer;
Высота клиентской части графического окна в пикселах
property Caption: string;
Заголовок графического окна
property Title: string;
Заголовок графического окна
property IsFixedSize: boolean;
Имеет ли графическое окно фиксированный размер
Методы класса GraphABCWindowprocedure 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 представляет тип системы координат для графического окна.
Свойства класса GraphABCCoordinateproperty 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 преобразований координат
Методы класса GraphABCCoordinateprocedure 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 - абстрактный: объекты этого класса не создаются.
Конструкторы класса ObjectABCconstructor Create(x,y,w,h: integer; cl: GColor);
Создает графический объект размера (w, h) цвета cl с координатами левого верхнего угла (x, y)
constructor Create(g: ObjectABC);
Создает графический объект - копию объекта g
Свойства класса ObjectABCproperty 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)
Методы класса ObjectABCprocedure 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 - абстрактный: объекты этого класса не создаются.
Свойства класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Прямоугольник.
Конструкторы класса RectangleABCconstructor Create(x,y,w,h: integer; cl: GColor);
Создает прямоугольник размера (w,h) цвета cl с координатами левого верхнего угла (x,y)
constructor Create(g: RectangleABC);
Создает прямоугольник - копию прямоугольника g
Методы класса RectangleABCfunction Clone: RectangleABC;
Возвращает клон прямоугольника
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Квадрат.
Конструкторы класса SquareABCconstructor Create(x,y,w: integer; cl: GColor);
Создает квадрат размера w цвета cl с координатами левого верхнего угла (x,y)
constructor Create(g: SquareABC);
Создает квадрат - копию квадрата g
Методы класса SquareABCfunction Clone: SquareABC;
Возвращает клон квадрата
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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.
Конструкторы класса EllipseABCconstructor Create(x,y,w,h: integer; cl: GColor);
Создает эллипс размера (w, h) цвета cl с координатами левого верхнего угла (x, y)
constructor Create(g: EllipseABC);
Создает эллипс - копию эллипса g
Методы класса EllipseABCfunction Clone: EllipseABC;
Возвращает клон эллипса
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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.
Конструкторы класса CircleABCconstructor 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;
Возвращает клон круга
Свойства класса CircleABCproperty Radius: integer;
Радиус круга
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Прямоугольник со скругленными краями.
Конструкторы класса RoundRectABCconstructor Create(x,y,w,h,rr: integer; cl: GColor);
Создает прямоугольник со скругленными краями размера (w,h), цветом cl, радиусом скругления r и координатами левого верхнего угла (x,y)
constructor Create(g: RoundRectABC);
Создает прямоугольник со скругленными краями - копию прямоугольника со скругленными краями g
Свойства класса RoundRectABCproperty Radius: integer;
Радиус скругления углов
Методы класса RoundRectABCfunction Clone: RoundRectABC;
Возвращает клон прямоугольника со скругленными краями
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Квадрат со скругленными краями.
Конструкторы класса RoundSquareABCconstructor Create(x,y,w,r: integer; cl: GColor);
Создает квадрат со скругленными краями размера w, цвета cl с радиусом скругления r и координатами левого верхнего угла (x, y)
constructor Create(g: RoundSquareABC);
Создает квадрат со скругленными краями - копию квадрата со скругленными краями g
Методы класса RoundSquareABCfunction Clone: RoundSquareABC;
Возвращает клон квадрата со скругленными краями
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Текст.
Конструкторы класса TextABCconstructor Create(x,y,pt: integer; cl: GColor; txt: string);
Создает текстовый объект с текстом txt размера pt пунктов, цветом cl и координатами левого верхнего угла (x,y)
constructor Create(g: TextABC);
Создает текстовый объект - копию текстового объекта g
Свойства класса TextABCproperty FontSize: integer;
Размер шрифта в пунктах
property TransparentBackground: boolean;
Прозрачен ли фон текстового объекта
property BackgroundColor: GColor;
Цвет фона текстового объекта
Методы класса TextABCfunction Clone: TextABC;
Возвращает клон текстового объекта
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Правильный многоугольник.
Конструкторы класса RegularPolygonABCconstructor Create(x,y,r,n: integer; cl: GColor);
Создает правильный многоугольник с n вершинами, радиусом r, цветом cl и координатами центра (x, y)
constructor Create(g: RegularPolygonABC);
Создает правильный многоугольник - копию правильного многоугольника g
Свойства класса RegularPolygonABCproperty Count: integer;
Количество вершин правильного многоугольника
property Radius: integer;
Радиус многоугольника
property Angle: real;
Угол поворота (в градусах)
Методы класса RegularPolygonABCfunction Clone: RegularPolygonABC;
Возвращает клон правильного многоугольника
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Правильная звезда.
Конструкторы класса StarABCconstructor Create(x,y,r,r1,nn: integer; cl: GColor);
Создает звезду с nn вершинами, радиусом r, внутренним радиусом r1, цветом cl и координатами центра (x,y)
constructor Create(g: StarABC);
Создает звезду - копию звезды g
Свойства класса SquareABCproperty InternalRadius: integer;
Внутренний радиус
Методы класса SquareABCfunction Clone: StarABC;
Возвращает клон звезды
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Рисунок.
Конструкторы класса PictureABCconstructor Create(x,y: integer; fname: string);
Создает рисунок с координатами левого верхнего угла (x,y), считывая его из файла fname
constructor Create(x,y: integer; p: Picture);
Создает рисунок с координатами левого верхнего угла (x,y), считывая его из объекта p
constructor Create(g: PictureABC);
Создает рисунок - копию рисунка g
Свойства класса PictureABCproperty Transparent: boolean;
Прозрачен ли рисунок
property TransparentColor: GColor;
Цвет, считающийся прозрачным
property ScaleX: real;
Масштаб рисунка по оси X относительно исходного изображения. При отрицательных значениях происходит зеркальное отражение относительно вертикальной оси
property ScaleY: real;
Масштаб рисунка по оси Y относительно исходного изображения. При отрицательных значениях происходит зеркальное отражение относительно вертикальной оси
Методы класса PictureABCprocedure ChangePicture(fname: string);
Меняет изображение рисунка, считывая его из файла fname
procedure ChangePicture(p: Picture);
Меняет изображение рисунка, считывая его из объекта p
procedure FlipVertical;
Зеркально отображает рисунок относительно вертикальной оси
procedure FlipHorizontal;
Зеркально отображает рисунок относительно горизонтальной оси
procedure Save(fname: string);
Сохраняет рисунок в файл fname
function Clone: PictureABC;
Возвращает клон рисунка
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Набор рисунков, содержащий несколько изображений, одно из которых рисуется на экране.
Конструкторы класса MultiPictureABCconstructor 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
Свойства класса MultiPictureABCproperty CurrentPicture: integer;
Номер текущего рисунка
property Count: integer;
Количество рисунков в наборе
Методы класса MultiPictureABCprocedure Add(fname: string);
Добавляет рисунок к набору, загружая его из файла fname. Рисунок должен иметь те же размеры, что и все рисунки из набора
procedure ChangePicture(fname: string);
Меняет набор рисунков на набор, состоящий из одного рисунка, загружая его из файла с именем fname
procedure ChangePicture(w: integer; fname: string);
Меняет набор рисунков на набор, загружая его из файла с именем fname. Файл должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w
procedure NextPicture;
Циклически переходит к следующему рисунку из набора
procedure PrevPicture;
Циклически переходит к предыдующему рисунку из набора
function Clone: MultiPictureABC;
Возвращает клон набора рисунков
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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.
Конструкторы класса BoardABCconstructor Create(x,y,nx,ny,szx,szy: integer; cl: GColor);
Создает доску nx на ny клеток цвета cl с размером клетки (szx,szy) в позиции (x,y).
constructor Create(g: BoardABC);
Создает доску - копию доски g
Свойства класса BoardABCproperty DimX: integer;
Количество клеток доски по горизонтали
property DimY: integer;
Количество клеток доски по вертикали
property CellSizeX: integer;
Размер клетки по горизонтали
property CellSizeY: integer;
Размер клетки по вертикали
Методы класса BoardABCfunction Clone: BoardABC;
Возвращает клон доски
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Доска с объектами.
Конструкторы класса ObjectBoardABCconstructor Create(x,y,nx,ny,szx,szy: integer; cl: GColor);
Создает доску с объектами nx на ny клеток цвета cl с размером клетки (szx, szy) в позиции (x, y).
constructor Create(g: ObjectBoardABC);
Создает доску с объектами - копию доски g
Методы класса ObjectBoardABCprocedure 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;
Возвращает клон доски с объектами
Свойства, унаследованные от класса BoardABCproperty DimX: integer;
Количество клеток доски по горизонтали
property DimY: integer;
Количество клеток доски по вертикали
property CellSizeX: integer;
Размер клетки по горизонтали
property CellSizeY: integer;
Размер клетки по вертикали
Свойства, унаследованные от класса BoundedObjectABCproperty BorderColor: GColor;
Цвет границы
property BorderWidth: integer;
Ширина границы
property Bordered: boolean;
Имеет ли объект границу (по умолчанию True)
property Filled: boolean;
Заполнена ли внутренность объекта (по умолчанию True)
Методы, унаследованные от класса BoundedObjectABCprocedure SetDrawSettings;
Защищенный метод. Устанавливает атрибуты пера и кисти перед рисованием
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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 и представляет графический объект Спрайт, автоматически анимирующий на экране последовательность рисунков. Спрайты также могут иметь несколько состояний, каждое из которых представляет собой анимацию рисунков.
Конструкторы класса SpriteABCconstructor 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
Свойства класса SpriteABCproperty StateName: string;
Имя состояния
property State: integer;
Номер состояния (от 1 до StateCount)
property StateCount: integer;
Количество состояний. Свойство доступно только на чтение
property Speed: integer;
Скорость спрайта (1..10)
property Active: boolean;
Активность спрайта: True, если спрайт активен (т.е. происходит его анимация), и False в противном случае
property Frame: integer;
Текущий кадр в текущем состоянии
Методы класса SpriteABCprocedure 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;
Возвращает клон объекта
Свойства, унаследованные от класса MultiPictureABCproperty CurrentPicture: integer;
Номер текущего рисунка
property Count: integer;
Количество рисунков в наборе
Методы, унаследованные от класса MultiPictureABCprocedure Add(fname: string);
Добавляет рисунок к спрайту, загружая его из файла fname. Рисунок должен иметь те же размеры, что и все рисунки из набора
procedure ChangePicture(fname: string);
Меняет набор рисунков на набор, состоящий из одного рисунка, загружая его из файла с именем fname
procedure ChangePicture(w: integer; fname: string);
Меняет набор рисунков на набор, загружая его из файла с именем fname. Файл должен хранить последовательность изображений одного размера, расположенных по горизонтали. Каждое изображение считается имеющим ширину w
procedure NextPicture;
Циклически переходит к следующему рисунку из набора
procedure PrevPicture;
Циклически переходит к предыдующему рисунку из набора
function Clone: MultiPictureABC;
Возвращает клон набора рисунков
Свойства, унаследованные от класса ObjectABCproperty 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)
Методы, унаследованные от класса ObjectABCprocedure 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