如何操纵TPath中的各个点?

时间:2013-12-19 14:10:11

标签: delphi firemonkey

我想更改TPath中某些点的坐标。但是,TPath.Data.Points属性是只读的。

有没有办法直接操作它们而不必通过TPath.Data字符串,在那里进行更改,并刷新控件?

我在想动画和优雅。

也许有人已经篡改了另一种方式,否则我只会去字符串路线......

(说说XE2,顺便说一句。不知道在以后的版本中这仍然是个问题)

1 个答案:

答案 0 :(得分:2)

使用类助手,如下所示:

TPathHelper = class helper for TPath
public
  procedure UpdPath;
end;

TPathDataHelper = class helper for TPathData
public
  procedure SetPoint(AIndex: Integer; PathPoint: TPathPoint);
end;

{ TPathHelper }

procedure TPathHelper.UpdPath;
begin
  UpdatePath
end;

{ TPathDataHelper }

procedure TPathDataHelper.SetPoint(AIndex: Integer; PathPoint: TPathPoint);
begin
  Self.FPathData[AIndex] := PathPoint;
  Self.FRecalcBounds := True
end;

要改变观点,请执行以下操作:

var pp: TPathPoint;
begin
  pp.Kind := TPathPointKind.ppMoveTo;
  pp.Point := PointF(Path1.Data.Points[0].Point.X + 10,Path1.Data.Points[0].Point.Y);
  Path1.Data.SetPoint(0,pp);
  Path1.UpdPath;
  Path1.Repaint;