1. 程式人生 > >canvas實現圖片圍繞左上角一點進行旋轉

canvas實現圖片圍繞左上角一點進行旋轉

canvas插入圖片,需要先在onload事件中預載入圖片,然後在用drawImage()方法插入圖片。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <input type="button" value="逆時針" />
        <input type="button" value
="順時針" />
<div id=""> <img src="img/code.jpg" id="myimg"/> </div> </body> <script> window.onload = function(){ var aInput = document.getElementsByTagName('input'); var oImg = document.getElementById('myimg'
); var yImg = new Image(); var isNow = 0; yImg.onload = function(){ draw(oImg); } yImg.src = oImg.src; function draw(obj){ var oC = document.createElement('canvas');//建立canvas節點用來替換img節點 var
oGc = oC.getContext('2d'); //將canvas的寬高和圖片寬高設定成一樣的 oC.width = obj.width; oC.height = obj.height; obj.parentNode.replaceChild(oC,obj); oGc.drawImage(obj,0,0); aInput[0].onclick = function(){ if (isNow == 0) { isNow = 3; } else{ isNow--; } tochange(); } aInput[1].onclick = function(){ if (isNow ==3) { isNow = 0; } else{ isNow++; } tochange(); } function tochange(){ switch (isNow){ case 0: oC.width = obj.width; oC.height = obj.height; oGc.rotate(0); oGc.drawImage(obj,0,0); break; case 1: oC.width = obj.height; oC.height = obj.width; oGc.rotate(90*Math.PI/180); oGc.drawImage(obj,0,-obj.height); break; case 2: oC.width = obj.width; oC.height = obj.height; oGc.rotate(180*Math.PI/180); oGc.drawImage(obj,-obj.width,-obj.height); break; case 3: oC.width = obj.height; oC.height = obj.width; oGc.rotate(270*Math.PI/180); oGc.drawImage(obj,-obj.width,0); break; default: break; } } } }
</script> </html>