dart - Flutter - 如何使用画布围绕中心旋转图像
问题描述
我正在尝试实现一个自定义画家,它可以在画布上绘制图像(缩小版),并且绘制的图像可以旋转和缩放。
我知道要缩放图像,我必须使用缩放方法缩放画布。
现在的问题是如何在其中心(或任何其他点)旋转缩放图像。画布的旋转方法只允许在左上角旋转。
解决方案
有同样的问题,解决方案只是在三行中制作自己的旋转方法
void rotate(Canvas canvas, double cx, double cy, double angle) {
canvas.translate(cx, cy);
canvas.rotate(angle);
canvas.translate(-cx, -cy);
}
因此,我们首先将画布移向您要绕其旋转的点。然后我们沿着左上角(Flutter 的默认值)旋转,它在坐标空间中是您想要的枢轴,然后将画布放回所需的位置,并应用旋转。方法非常高效,平移只需要添加 4 次,旋转成本与原来的相同。
推荐阅读
- python - Python中带有3个引号的多行
- html - 网页可以将自己作为规范网址吗?
- c# - 同时使用 Material Design 和 Caliburn.Micro
- java - 作者和书籍类 A - 对象数组作为 java 中的实例变量。获取数组对象属性
- google-chrome - chrome帮助表中缺少快捷键
- angular - 带有内容安全策略的 Angular 12 CSS 优化内联事件处理程序
- python - 如何在 C# 中实现 Python `to_bytes` 编码?
- google-apps-script - 6 分钟后 Google 脚本超时
- c++ - 支持 C++ 20、19.28 或 16.9 的最新 MSVC 是什么?
- python - 总和值取决于python中没有熊猫的其他列