首页 > 解决方案 > 如何旋转 TPathData(矢量路径)?

问题描述

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

标签: delphivectorfiremonkey

解决方案


与其旋转 TPathData,不如在绘制路径之前设置 TCanvas 矩阵?这可能更有效,因为 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

推荐阅读