HTML5动画----canvas基础4(矩阵变换--复杂变换)

上节的普通变换,其实就是 矩阵变换的特例,仅此而已

context.transform(m11,m12,m21,m22,dx,dy)//

context.setTransform(m11,m12,m21,m22,dx,dy)//将当前的矩阵进行重置为最初的矩阵,然后以相同的参数调用transform(),即先set(重置)再transform(变换)


 移动context.translate(x,y)=>context.transform(0,1,1,0,dx,dy)//context.transform(1,0,0,1,dx,dy)
 缩放scale(x,y)=>context.transform(m11,0,0,m22,0,0)//context.transform(0,m12,m21,0,0,0)-->
 旋转rotate(rotate)=>context.transform(cos,sin,-sin,cos,0,0)

如ctx.transform(0.95,0,0,0.95,30,30)代替ctx.translate(30,30);ctx.scale(0.95,0.95)
      

<script type="text/javascript">
            function draw(){
                var ctx=document.getElementById("myCanvas").getContext('2d');
                ctx.translate(200,20);
                for(var i=1;i<90;i++){
               //     ctx.save();//保存canvas的状态,restore()用于恢复canvas的状态
                    ctx.transform(0.95,0,0,0.95,30,30);//缩放0.95与移动30,30
                    ctx.rotate(Math.PI/12);//旋转
                    ctx.beginPath();
                    ctx.fillStyle="red";
                    ctx.globalAlpha="0.4";
                    ctx.arc(0,0,50,0,Math.PI*2,true);//画圆
                    ctx.closePath();
                    ctx.fill();
                }
                ctx.setTransform(1,0,0,1,10,10);//恢复的原点再改为原点坐标为(10,10)
                ctx.fillStyle="blue";
                ctx.fillRect(0,0,50,50);//画矩形
                ctx.fillRect();
                ctx.fill();
            }
            window.οnlοad=function(){
                draw();
            }
        </script>
        <canvas id="myCanvas" width="700" height="300"></canvas>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值