2015-12-28 14:25:15 +03:00
|
|
|
|
// Класс штампа прямоугольника с методами увеличения-уменьшения от центра
|
2015-05-14 22:35:07 +03:00
|
|
|
|
uses GraphABC;
|
|
|
|
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
RectangleStamp = class
|
|
|
|
|
|
x,y,w,h: integer;
|
|
|
|
|
|
constructor (xx,yy,ww,hh: integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
x := xx; y := yy;
|
|
|
|
|
|
w := ww; h := hh;
|
|
|
|
|
|
end;
|
|
|
|
|
|
procedure Stamp;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Rectangle(x,y,x+w,y+h);
|
|
|
|
|
|
end;
|
|
|
|
|
|
procedure IncreaseFromCenter(dw: integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
w += dw*2; h += dw*2;
|
|
|
|
|
|
x -= dw; y -= dw;
|
|
|
|
|
|
end;
|
|
|
|
|
|
procedure DecreaseFromCenter(dw: integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
IncreaseFromCenter(-dw);
|
|
|
|
|
|
end;
|
|
|
|
|
|
procedure MoveOn(dx,dy: integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
x += dx; y += dy;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
var r := new RectangleStamp(100,100,300,300);
|
|
|
|
|
|
r.Stamp;
|
|
|
|
|
|
while r.w>2 do
|
|
|
|
|
|
begin
|
|
|
|
|
|
r.DecreaseFromCenter(4);
|
|
|
|
|
|
r.Stamp;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end.
|