html - 使用 HTML5 Canvas - 围绕任意点旋转图像

标签 html canvas html5-animation

在半圆形(北半球)图像上旋转表盘作为背景。 范围可以是 0 - 180 度。 在输入到进行 Canvas 转换的方法时,刻度盘将旋转并停在匹配的值上。 这是我根据 phrogz 传递的帮助和示例所做的尝试

最佳答案

一般来说,你要做的是:

  1. 将上下文转换为 Canvas 上对象应旋转的点。
  2. 旋转上下文。
  3. 通过对象内旋转中心的负偏移来转换上下文。
  4. 在 0,0 处绘制对象。

在代码中:

ctx.save();
ctx.translate( canvasRotationCenterX, canvasRotationCenterY );
ctx.rotate( rotationAmountInRadians );
ctx.translate( -objectRotationCenterX, -objectRotationCenterY );
ctx.drawImage( myImageOrCanvas, 0, 0 );
ctx.restore();

这是一个 working example在行动中展示这一点。 (旋转的数学只是通过实验破解,以找到适合快速绘制的仪表盘的摆动量和弧度偏移量。)

很明显,您可以将上面第 3 步中的 translate 调用替换为 drawImage() 调用的偏移量。例如:

ctx.drawImage( myImageOrCanvas, -objectRotationCenterX, -objectRotationCenterY );

当您有多个对象要在同一位置绘制时,建议使用上下文转换。

关于html - 使用 HTML5 Canvas - 围绕任意点旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4649836/

相关文章:

javascript - 同一元素的 CSS3 多重过渡

ios - 如何在 iOS 上为 HTML 5 横幅提供过渡动画?

html - 类名 :hover #myID {style}

javascript - getElementById 返回空值

javascript - 在 Fabric.js 中将 Canvas 下载为 PNG,出现网络错误

reactjs - 在 React 的 Canvas 元素上加载图像

javascript - HTML5 Canvas /动画资源

html - 绕轴旋转立方体

html - 如何在 div 的中心对齐具有特定宽度的文本?

ANDROID - 在 Canvas 中撤消和重做