首页 > 解决方案 > Flutter - 如何使用画布围绕中心旋转图像

问题描述

我正在尝试实现一个自定义画家,它可以在画布上绘制图像(缩小版),并且绘制的图像可以旋转和缩放。

我知道要缩放图像,我必须使用缩放方法缩放画布。

现在的问题是如何在其中心(或任何其他点)旋转缩放图像。画布的旋转方法只允许在左上角旋转。

这是我可以扩展的实现

标签: dartflutter

解决方案


有同样的问题,解决方案只是在三行中制作自己的旋转方法

void rotate(Canvas canvas, double cx, double cy, double angle) {
  canvas.translate(cx, cy);
  canvas.rotate(angle);
  canvas.translate(-cx, -cy);
}

因此,我们首先将画布移向您要绕其旋转的点。然后我们沿着左上角(Flutter 的默认值)旋转,它在坐标空间中是您想要的枢轴,然后将画布放回所需的位置,并应用旋转。方法非常高效,平移只需要添加 4 次,旋转成本与原来的相同。


推荐阅读