开发者社区> 问答> 正文

关于canvas的scale缩放中心的问题

screenshot
对小正方形进行2倍的放大,他的坐标也会被移动,怎样让它以本身的中心放大呢?向下面这样
screenshot

展开
收起
杨冬芳 2016-06-13 11:40:58 4468 0
1 条回答
写回答
取消 提交回答
  • IT从业
    <!DOCTYPE html>
    
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <canvas id="mycanvas" width="400" height="400" style="border: 1px solid #0E2D5F"></canvas>
    <script>
        var canvasDom=document.getElementById("mycanvas");
        var ctx=canvasDom.getContext("2d");
    
        var rectWidth=100;
        var rectHeight=100;
    
    
        function drawRect(centerX,centerY,scaleX,scaleY){
            ctx.clearRect(0,0,canvasDom.width,canvasDom.height);
            ctx.save();
            ctx.translate(centerX,centerY);
            ctx.scale(scaleX*2,scaleY*2);
            ctx.fillStyle="#0E2D5F";
            ctx.fillRect(-rectWidth/2,-rectWidth/2,rectWidth,rectHeight);
            ctx.restore();
    
            ctx.save();
            ctx.translate(centerX,centerY);
            ctx.scale(scaleX,scaleY);
            ctx.fillStyle="#ffffff";
            ctx.fillRect(-rectWidth/2,-rectWidth/2,rectWidth,rectHeight);
            ctx.restore();
        }
    
        drawRect(canvasDom.width/2,canvasDom.height/2,1,1);
    </script>
    </body>
    </html>
    2019-07-17 19:35:31
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载