扩展TPolygon,添加点和删除点

时间:2014-06-10 20:49:22

标签: delphi

我需要扩展类型类型TPolygon = TPointF数组;通过addpoint和deletepoint函数

我正在考虑类助手函数的解决方案,但这种方法对于类型是不可行的。我没有明确的想法如何开始这项任务。

///  concept for add points to polygon
procedure TPolygon.AddPoint(x, y: Integer);
var
  i: Integer;
begin
  i := length(???);

  setlength(???, i + 1);

  self[i].x := x;
  self[i].y := y;
end;


///  concept forremove points from polygon

procedure TPolygon.DeletePoint(x, y: Integer);
var
  i: Integer;
begin
  i := length(???);

  setlength(???, i - 1);

  //  remove entry [i]

  //  renumber the other points ....
end;

1 个答案:

答案 0 :(得分:2)

您可以使用数组类型的记录帮助程序:

type
  TPolygonHelper = record helper for TPolygon
    procedure Add(const X, Y: Single);
  end;

procedure TPolygonHelper.Add(const X, Y: Single);
var
  N: Integer;
begin
  N := Length(Self);
  SetLength(Self, N+1);
  Self[N].X := X;
  Self[N].Y := Y;
end;

请注意,这需要Delphi XE3扩展记录助手。