You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Canvas上绘制可围绕自身中心旋转的Path2D对象的实现问题

实现逻辑

要实现Path2D图形围绕自身中心旋转,只需要调整变换顺序,补充图形自身中心的偏移即可,核心原理如下:

  • 首先确认你当前使用的SVG图形固有宽高约为30px(路径坐标范围x: 0~29.8、y: 0~29.8),自身中心坐标为(15, 15)
  • Canvas 2D的变换是矩阵后生效,正确顺序为:
    • 平移到你期望图形最终放置的目标位置
    • 执行旋转操作
    • 反向平移(-自身中心x, -自身中心y)抵消图形的固有偏移,让图形中心与旋转锚点重合

可直接使用的修改代码

你只需要替换原代码中animate函数的变换逻辑即可:

const animate = () => {
    requestAnimationFrame(animate)
    ctx.fillStyle = "rgba(0 , 0 , 0 , 0.1)"
    ctx.fillRect(0 , 0 , canvas.width , canvas.height)
    ctx.fillStyle = "white"

    // 调整后的变换顺序
    ctx.translate(70, 70) // 第一步:平移到目标位置,这里就是最终图形的中心位置
    ctx.rotate(rotation) // 第二步:绕当前原点(目标位置)旋转
    ctx.translate(-15, -15) // 第三步:反向偏移图形自身中心,让图形中心对齐旋转锚点

    rotation += 0.1
    ctx.fill(path)
    ctx.resetTransform()
}

如果你的SVG路径后续有调整,只需要重新计算路径的最大宽高,替换第三步偏移的15为对应半宽、半高数值即可。

内容的提问来源于stack exchange,提问作者BladeOfLightX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:36:04