我想更改TPath中某些点的坐标。但是,TPath.Data.Points
属性是只读的。
有没有办法直接操作它们而不必通过TPath.Data
字符串,在那里进行更改,并刷新控件?
我在想动画和优雅。
也许有人已经篡改了另一种方式,否则我只会去字符串路线......
(说说XE2,顺便说一句。不知道在以后的版本中这仍然是个问题)
答案 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;