如何在 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));
就这么简单...
在 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));
就这么简单...