Описание записи точки. Думаю можно обойтись и записями.
Код:
Dot = record
x,y,xz,yz:integer;
TypeDot:byte;
ID:int64;
end;
ArrDot:array of Dot;
Описание процедуры пересчета координат при масштабировании
Код:
procedure ResizeMap(df:extended);
var i:integer;
begin
for i:=0 to High(ArrDot) do begin
ArrDot[i].xz:=Round(ArrDot[i].x*df);
ArrDot[i].yz:=Round(ArrDot[i].y*df);
end;
end;
Описание процедуры пересчета координат при перемещении
Код:
procedure MoveMap(dx,dy:integer);
var i:integer;
begin
for i:=0 to High(ArrDot) do begin
ArrDot[i].xz:=ArrDot[i].x+dx;
ArrDot[i].yz:=ArrDot[i].y+dy;
end;
end;
Вывод осуществляется по координатам
xz и
yz