zoukankan      html  css  js  c++  java
  • HTML5-Canvas 图形变换+状态保存

    1. 图形变换

    canvas是基于状态绘制图形的。故此一般情况下,canvas的绘制的图形路径和状态时分离的。

    function drawShape(ctx){
    
        // 绘制路径
        shapePath(ctx);
    
        // 进行填充或者绘制
        // ...
    }
    
    function shapePath(ctx){
    
        ctx.beginPath();
    
        // 图形路径
        // ...
        
        ctx.closePath();
    
    }

    在填充或绘制之前可以调用一些状态或者图形变换的来设置当前绘制图形的状态。

    这里所说的图形变换大致指的就是:

    1> 位移 translate(x,y) : 将canvas画布进行位移显示。将坐标原点移动到(x,y)的位置,translate将原点移动之后,如果再次调用translate进行移动,那么会依照上一个translate移动之后作为原点参考。

    2> 旋转 rotate(deg) : 将canvas画布进行旋转显示

    3> 缩放 scale(sx,sy) : 将canvas画布进行缩放显示

    2.canvas状态的保存和恢复

    save()函数:保存当前的图形状态

    restore()函数:返回save()函数保存时候的状态

    function drawShape(ctx){
    
        ctx.save(); // 状态保存
    
        // 绘制路径
        shapePath(ctx);
    
        // 进行填充或者绘制
        // ...
        
        ctx.restore(); // 状态恢复
    }
    
    function shapePath(ctx){
    
        ctx.beginPath();
    
        // 图形路径
        // ...
        
        ctx.closePath();
    
    }

     3. 变换矩阵

    transform(a,b,c,d,e,f)状态会叠加。

     setTransform(a,b,c,d,e,f)将变换矩阵首先变成单位矩阵,然后在对传入的参数进行图形变换,会忽略之前所有的transform操作。

  • 相关阅读:
    HTML相关
    190. 颠倒二进制位【简单】
    22. 括号生成【中等】
    83. 删除排序链表中的重复元素【简单】
    vuejs2.0声明周期
    js增加8小时
    获取DOM的原生事件对象
    hive创建表失败:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaEx
    安装hive过程填坑小结
    CentOS 7配置网络,静态IP
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/5663375.html
Copyright © 2011-2022 走看看