有些人有些不解,為什么Canvas的坐標是從左上角開始的,而且向下是Y的正方向,向右是X的正方向?其實我也很不理解~~
為什么就不能給我們更多的自定義功能呢?下面我改寫了一段Canvas畫布調整的代碼,包含了Canvas畫布的移動、縮放和旋轉等相關功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <style type="text/css"> body{margin:20px auto; padding:0; width:1000px } canvas{border:dashed 2px #ccc} span{font-size:16px; cursor:pointer} </style> <script type="text/javascript"> function $$(id){ return document.getElementById(id); } function drawRect(co){ var can = $$('can'); cans = can.getContext('2d'); cans.strokeStyle = co; cans.lineWidth = 3; cans.strokeRect(600,50,80,40); } function drawCircle(co){ cans.beginPath(); cans.arc(30,30,30,0,Math.PI*2,1); cans.closePath(); cans.strokeStyle = co; cans.lineWidth = 3; cans.stroke(); } function mv_click(){ var can = $$('can'); var cans = can.getContext('2d'); cans.translate(40,40); drawRect('black'); } function zoom_click(){ var can = $$('can'); var cans = can.getContext('2d'); drawCircle('red'); cans.scale(0.5,1.5); drawCircle('green'); } function rotate_click(){ var can = $$('can'); var cans = can.getContext('2d'); cans.rotate(Math.PI*2/360*45); drawRect('green'); cans.rotate(-Math.PI/4); drawRect('black'); } </script> <body onload="drawRect('red');"> <canvas id="can" width="1000px" height="800px"></canvas> <span onclick="mv_click();"><mark>移動</mark></span> <span onclick="zoom_click();"><mark>縮放</mark></span> <span onclick="rotate_click();"><mark>旋轉</mark></span> </body> </html>
注意:調整了畫布后,以后的操作就按照調整后的,千萬注意坐標哦
移動功能:
縮放功能:
旋轉功能: