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

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

我在考虑动画和优雅。

也许有人已经篡改了另一种时尚,否则我就走字符串路线......

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

最佳答案

使用类助手如下:

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;

关于delphi - 如何操作 TPath 中的各个点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20683875/

10-13 02:43