HTML5之Canvas繪圖——Canvas畫布調整之移動、縮放、旋轉


有些人有些不解,為什么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>

注意:調整了畫布后,以后的操作就按照調整后的,千萬注意坐標哦

移動功能:

縮放功能:

旋轉功能:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM