画布从底部中心图像角度旋转?

Tom*_*Tom 14 javascript html5 canvas rotation

如何使用画布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>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎是从图像的左上角旋转它.任何的想法?

编辑:最后,对象(太空飞船)必须像时钟指针一样旋转,就像它向右/向左转.

Vin*_*nie 26

首先,您必须转换到您想要旋转的点.在这种情况下,图像尺寸为64 x 120.要围绕底部中心旋转,要转换为32,120.

ctx.translate(32, 120);
Run Code Online (Sandbox Code Playgroud)

这会将您带到图像的底部中心.然后旋转画布:

ctx.rotate(90 * Math.PI/180);
Run Code Online (Sandbox Code Playgroud)

旋转90度.

然后当你绘制图像时试试这个:

ctx.drawImage(img, -32, -120, 64, 120);
Run Code Online (Sandbox Code Playgroud)

?那样有用吗?