画布从底部中心图像角度旋转?
如何使用canvas html5元素从底部中心角度旋转图像?
<html>
<head>
<title>test</title>
<script type="text/javascript">
function startup() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'player.gif';
img.onload = function() {
ctx.translate(185, 185);
ctx.rotate(90 * Math.PI / 180);
ctx.drawImage(img, 0, 0, 64, 120);
}
}
</script>
</head>
<body onload='startup();'>
<canvas id="canvas" style="position: absolute; left: 300px; top: 300px;" width="800" height="800"></canvas>
</body>
</html>
不幸的是,这似乎是从图像的左上角旋转它。 任何想法?
编辑:最后,物体(太空飞船)必须像时钟指针一样旋转,就像它在右转/左转一样。
How do you rotate an image with the canvas html5 element from the bottom center angle?
<html>
<head>
<title>test</title>
<script type="text/javascript">
function startup() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'player.gif';
img.onload = function() {
ctx.translate(185, 185);
ctx.rotate(90 * Math.PI / 180);
ctx.drawImage(img, 0, 0, 64, 120);
}
}
</script>
</head>
<body onload='startup();'>
<canvas id="canvas" style="position: absolute; left: 300px; top: 300px;" width="800" height="800"></canvas>
</body>
</html>
Unfortunately this seems to rotate it from the top left angle of the image. Any idea?
Edit: in the end the object (space ship) has to rotate like a clock pointer, as if it is turning right/left.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先,您必须平移到您想要旋转的点。 在本例中,图像尺寸为 64 x 120。要围绕底部中心旋转,您需要将其转换为 32, 120。
这会将您带到图像的底部中心。 然后旋转画布:
旋转90度。
然后当你绘制图像时尝试这个:
? 那样有用吗?
First you have to translate to the point around which you would like to rotate. In this case the image dimensions are 64 x 120. To rotate around the bottom center you want to translate to 32, 120.
That brings you to the bottom center of the image. Then rotate the canvas:
Which rotate by 90 degrees.
Then when you draw the image try this:
? Does that work?
正确答案当然是文森特的答案。
我对这个旋转/平移的事情有点摸索,我认为我的小实验可能会很有趣:
我的绊脚石问题是定位旋转的图形很困难,因为它是沿着旋转轴的:要么我们必须做一些三角数学在原始原点进行绘制,或者我们必须在辅助隐藏画布上绘制,然后将其绘制在目标画布上。
除非其他人有更好的主意?
The correct answer is, of course, Vincent's one.
I fumbled a bit with this rotation/translation thing, and I think my little experiments could be interesting to show:
My stumbling issue was that positioning the rotated figure is hard, because it is along the rotated axis: either we have to do some trigo math to paint at the primitive origin, or we have to draw on a secondary hidden canvas and then paint it on the target one.
Unless somebody else has a better idea?
当我需要从指定点(中心)开始旋转文本时,我使用过这个?
I have used this, when I needed to rotate texts started from their specified point (center)?