在Skiasharp中,我有一个变换矩阵,我在画布上应用它来移动路径并跟随鼠标的位移。目前,我从鼠标坐标计算一个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
但实际上我需要变换路径本身而不是"移动"。画布上。如果我使用:
Path.Transform(transformMatrix);
canvas.DrawPath(Path, paint);
路径与移动画布时不在同一位置?!?对于计算正确的变换矩阵以应用于路径以获得相同的结果有什么想法吗?
只是为了确定(我不知道是否重要提及它),但画布的矩阵不再是单位矩阵。当然,在测试过程中它不会改变!
好吧,我完全错了…
!当路径被移动时,而不是对画布应用矩阵变换(当画布本身被移动或重新缩放时,这是正确的方法),在这种情况下,解决方案是直接转换路径本身:
SelectedPath.Transform(SKMatrix.CreateTranslation(dx, dy));
Just so easy…