Rotating an image from its center point
<!doctype html> <html lang="en"> <body> <div style="position: absolute; top: 50px; left: 50px;"> <canvas id="canvas" width="200" height="200"> Your browser does not support the HTML 5 Canvas. </canvas>//ww w.j a v a2 s . co m <script type="text/javascript"> let theCanvas = document.getElementById('canvas'); let context = theCanvas.getContext('2d'); //canvasApp level variables let rotation=0; let x=50; let y=50; let width=20; let height=20; function drawScreen() { context.fillStyle = '#000000'; context.fillRect(0, 0, 200, 200); context.fillStyle = '#ffffff'; //transformation let angleInRadians = rotation * Math.PI / 180; context.save(); //save current state in stack context.setTransform(1,0,0,1,0,0); // reset to identity //translate the canvas origin to the center of the player context.translate(x+.5*width,y+.5*height); context.rotate(angleInRadians); //drawShip context.strokeStyle = '#ffffff'; context.beginPath(); //hard coding in locations context.moveTo(0,-10); context.lineTo(9,9); context.lineTo(0,-1); context.moveTo(-1,-1); context.lineTo(-10,9); context.lineTo(-1,-10); context.stroke(); context.closePath(); //restore context context.restore(); //pop old state on to screen //add to rotation rotation++; } const FRAME_RATE=40; let intervalTime=1000/FRAME_RATE; gameLoop(); function gameLoop() { drawScreen(); window.setTimeout(gameLoop, intervalTime); } </script> </div> </body> </html>