Показать сообщение отдельно
  #5  
Старый 26.05.2013, 01:28
xabik xabik вне форума
Прохожий
 
Регистрация: 08.05.2012
Сообщения: 6
Репутация: 10
По умолчанию

Описание записи точки. Думаю можно обойтись и записями.

Код:
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
Ответить с цитированием