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

How to rotate TPathData (vector path)?

我有 TPathData 箭头并直接在 Canvas 上绘制。如何旋转 TPathData?我知道旋转 Tpath,但我直接在 Canvas(线条和箭头)上绘制。我尝试旋转 Tpath 和获取数据字符串 - 但它与以前相同。

您必须创建一个 rotation matrix and then apply it

M := TMatrix.CreateRotation(DegToRad(90));  
PathData.ApplyMatrix(M);

为什么不在绘制路径之前设置 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