Delphi 如何旋转TPathData(矢量路径)?

Delphi 如何旋转TPathData(矢量路径)?,delphi,vector,firemonkey,Delphi,Vector,Firemonkey,我有TPathData箭头,直接在画布上绘制。如何旋转数据?我知道旋转Tpath,但我直接在画布上绘制(线和箭头)。我尝试旋转Tpath和get数据字符串,但与以前一样。您必须创建一个和,然后 为什么不在绘制路径之前设置TCanvas矩阵,而不是旋转TPathData?这可能更有效,因为GPU负责旋转,而且在数值上更稳定,因为如果旋转多次,不会丢失路径数据点的任何精度 msave := Image1.Bitmap.Canvas.Matrix; Image1.Bitmap.Canvas.SetMa

我有TPathData箭头,直接在画布上绘制。如何旋转数据?我知道旋转Tpath,但我直接在画布上绘制(线和箭头)。我尝试旋转Tpath和get数据字符串,但与以前一样。

您必须创建一个和,然后


为什么不在绘制路径之前设置TCanvas矩阵,而不是旋转TPathData?这可能更有效,因为GPU负责旋转,而且在数值上更稳定,因为如果旋转多次,不会丢失路径数据点的任何精度

msave := Image1.Bitmap.Canvas.Matrix;
Image1.Bitmap.Canvas.SetMatrix(TMatrix.CreateRotation(DegToRad(90)));
Image1.Bitmap.Canvas.DrawPath(PathData, 1);
Image1.Bitmap.Canvas.SetMatrix(msave); // Restore canvas matrix
msave := Image1.Bitmap.Canvas.Matrix;
Image1.Bitmap.Canvas.SetMatrix(TMatrix.CreateRotation(DegToRad(90)));
Image1.Bitmap.Canvas.DrawPath(PathData, 1);
Image1.Bitmap.Canvas.SetMatrix(msave); // Restore canvas matrix