我想更改 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/