Canvas的图形变换

本文详细介绍了如何使用Canvas API中的translate、rotate、scale等函数进行图形变换,以实现绘制星形的目的。同时,文章还阐述了变换矩阵的概念及其在Canvas中的应用。读者将了解到如何在绘制前保存上下文并在绘制后恢复,以实现精确的图形变换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在图形学中,一般先画出原形,再通过图像变换得到目的图形

Canvas提供的图形变换API:

位移:translate(x,y)
旋转:rotate(deg)
缩放:scale(se,sy):不单只放大图形大小,也会放大其他属性
!在Canvas的图形变换函数是叠加的,
所以:
绘制前:context.save()
绘制后:context.restore()
   function drawStar(cxt,x,y,R,rot){

        cxt.save();
        
        //图形变换
        cxt.translate(x,y);
        cxt.rotate(rot/180*Math.PI);
        cxt.scale(R,R);
        
        cxt.beginPath();
        starPath(cxt);
        cxt.closePath();

        cxt.fillStyle="#fb3";
        cxt.fill();
        
        cxt.restore();
    }

    function starPath(cxt){
        cxt.beginPath();
        for(var i=0;i<5;i++) {

            cxt.lineTo(
                    Math.cos((18 + i * 72) / 180 * Math.PI),
                    -Math.sin((18 + i * 72 )/180 * Math.PI)
            );
            cxt.lineTo(
                    Math.cos(( 54 + i * 72) /180 * Math.PI)*0.5,
                    -Math.sin((54 + i * 72) /180 * Math.PI)*0.5
            );

        }
        cxt.closePath();
    }
变换矩阵
|a c e|
|b d f|
|0 0 1|
a水平缩放(默认1)
b水平倾斜(默认0)
c垂直倾斜(默认0)
d垂直缩放(默认1)
e水平位移(默认0)
f垂直位移(默认0)

设置变换矩阵 :

transform(a,b,c,d,e,f):与之前transfrom效果叠加

settransform(a,b,c,d,e,f):与之前transfrom效果无关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值