【问题标题】:Rotate Html Canvas with image and drawing使用图像和绘图旋转 Html Canvas
【发布时间】:2020-10-20 22:20:30
【问题描述】:

所以我有一个带有背景图像的画布,上面有一个用户定义的点/坐标。

我想用图像和点旋转整个画布以保持在完全相同的位置。

我该怎么做。

这就是我所拥有的

      var canvas = document.getElementById("car");
      canvas.width = 364;
      canvas.height = 219;
      canvas.style = "border:1px solid red";
      var canvasContext = canvas.getContext("2d");

      const image = "https://i.ibb.co/cYfp8SQ/sedan.jpg";
      let canvasImg = new Image();
      canvasImg.src = image;
      canvasImg.onload = () => {
        canvasContext.drawImage(canvasImg, 0, 0, canvas.width, canvas.height);
      };

      setTimeout(() => {
        canvasContext.fillStyle = "red";
        canvasContext.beginPath();
        canvasContext.arc(110, 80, 5, 0, Math.PI * 2, true);
        canvasContext.fill();
      }, 200);

我已经阅读了一堆关于使用 translate 和 rotate 进行旋转的文章,但所有这些文章都带有绘图或图像,而不是两者。

有没有办法在保持坐标不变的同时旋转这个画布?

我做了一个小提琴来参考 https://jsfiddle.net/heinrichcoetzee/sjcxdv08/2/

它现在的样子 ->

我希望它看起来像什么 ->

【问题讨论】:

  • 不确定我是否理解问题 - 您希望图像围绕点旋转,而点不移动?如果是,那么一个好方法是设置画布的变换原点以匹配画布上点的位置。 Transform-origin 将接受 %coordinates,这应该会使计算更容易一些。查看 MDN 页面:developer.mozilla.org/en-US/docs/Web/CSS/transform-origin

标签: javascript canvas rotation


【解决方案1】:

这是 CSS:

canvas {
    transform: rotateZ(90deg);
}

或者在 JS 中:

  const canvas = document.getElementById("car");
  canvas.style.border = "1px solid red";
  canvas.style.transform = "rotateZ(90deg)";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2020-07-01
    • 1970-01-01
    • 2013-08-18
    • 2018-10-07
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多