如何在 Skiasharp 中转换路径而不是转换 Canvas?

How to transform path instead of transforming Canvas in Skiasharp?

在 Skiasharp 中,我有一个转换矩阵,我将其应用于 canvas 以移动路径并跟随鼠标的位移。目前,我从鼠标坐标计算一个 transformMatrix,一切正常:

    canvas.Save();                  // Save the actuel transform matrix
    SKMatrix ZoomMatrix = canvas.TotalMatrix.PostConcat(transformMatrix);
    canvas.SetMatrix(ZoomMatrix);   // Apply the matrix for actual Transform
    canvas.DrawPath(Path, paint);
    canvas.Restore();               // And restore the initial transform matrix

但实际上我需要转换路径本身而不是“移动”canvas。如果我使用:

    Path.Transform(transformMatrix);
    canvas.DrawPath(Path, paint);

路径与移动 canvas 时的路径不在同一位置?!?计算正确的变换矩阵以应用于路径以获得相同结果的任何想法?

可以肯定的是(我不知道提它是否重要)但是 canvas 的矩阵不再是单位矩阵。当然在测试期间它不会改变!

好吧,我的方法完全错了......!

移动路径时,不是对 canvas 应用矩阵变换(当 canvas 本身移动或重新缩放时,这是正确的方法),解决方案是在这种情况下直接转换路径本身:

    SelectedPath.Transform(SKMatrix.CreateTranslation(dx, dy));

就这么简单...