【发布时间】: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