美文网首页
(17.05.26)(46)canvas的弧形、文字、线性/径向

(17.05.26)(46)canvas的弧形、文字、线性/径向

作者: 张不困_ | 来源:发表于2017-11-21 14:10 被阅读0次

    Canvas

    复习:

        获取绘图上下文
        var gd = oC.getContext('2d');
        设置起点
        gd.moveTo()
        设置终点
        gd.lineTo()
        描边
        gd.stroke()
        填充
        gd.fill()
        描边颜色
        gd.strokeStyle
        填充颜色
        gd.fillStyle
        重新开始路径
        gd.beginPath()
        清屏
        gd.clearRect()
        闭合路径
        gd.closePath()
        矩形
            a).
            gd.rect()
            gd.stroke()/fill()
            b).
            gd.fillRect()/strokeRect()
    

    弧形

            gd.arc(cx,cy,r,s,e,b)
                cx,cy       圆心位置
                r           半径
                s           开始弧度
                e           结束弧度
                b           是否逆时针
    

    文字

            gd.font = '字体大小 字体类型';
    
            水平对齐方式
            gd.textAlign                center
    
            基线对齐方式
            gd.textBaseline             middel
    
            gd.fillText(str,x,y);
            gd.strokeText(str,x,y);
    

    线性渐变

            var lg = gd.createLinearGradient(x1,y1,x2,y2);
            lg.addColorStop(系数(0-1),color);
    

    径向渐变

            var rg = gd.createRadialGradient(cx1,cy1,r1,cx2,cy2,r2);
            rg.addColorStop(系数(0-1),color);
    

    获取canvas图片

            oC.toDataURL(Mime-Type)
                    image/png       默认
                    image/jpeg 
    
        base64      文件流
            直接可以放在src或者background里
    
        Mime-Type
            abc.html        text/html
            abc.jpg         image/jpg
            abc.png         image/png
            abc.avi         video/avi
            abc.mp3         audio/mp3
    

        canvas添加事件
            给canvas添加事件
            判断范围

        gd.isPointInPath(x,y);


    jcanvas         javascript canvas的库
        http://jcscript.com/


    变形
        旋转
            gd.rotate(弧度);

        平移
            gd.translate(x,y);

        缩放
            gd.scale(x,y);

        注意:
            canvas的变形圆心永远都是画布的左上角
            操作的并不是图形,而是画布
            图形一旦画上去,就不变了

            保存      gd.save();
            变形操作    
            画图
            还原      gd.restore();
    

        引入图片背景

            var cp = gd.createPattern(oImg,'平铺方式')
    
            repeat
            repeat-x
            repeat-y
            no-repeat
    

        引入图片

            gd.drawImage(
                oImg,
                dx,dy
            );
    
            gd.drawImage(
                oImg,
                dx,dy,dw,dh
            );
    
            gd.drawImage(
                oImg,
                sx,sy,sw,sh,
                dx,dy,dw,dh
            );
    

        像素级操作

        var result = gd.getImageData(x,y,w,h);
        var d = result.data;
            d所有像素点
                四个为一组
                r,g,b,a,r,g,b,a,r,g,b,a...
            操作
        gd.putImageData(result,0,0);
    

    读取文件

        ondrop = function(ev){
            var oFile = ev.dataTransfer.files[0];
            oFile.name;         名字
            oFile.size;         大小
            oFile.type;         类型
    
            var reader = new FileReader();
    
            进度
            reader.onprogress = function(ev){
                ev.loaded       已加载
                ev.total        总数
                var scale = ev.loaded/ev.total;
            };
    
            完成
            reader.onload = function(ev){
                ev.target.result    文件内容
                相等
                reader.result       文件内容
            };
    
    
            以文本形式读取
            reader.readAsText(oFile);
            以Base64形式读取
            reader.readAsDataURL
        };
    

    sum(4)(5).sub(1)            最终返回结果8
    
    function sum(a){
        return function(b){
            return {
                sub:function(c){
                    return a+b-c;
                }
            };
        };
    }
    

    function show(a,b){
        arguments[0].push(5);
        arguments[1] = 6;
        alert(a.length,b);      4
    }
    var arr = [1,2,3,5];
    var b = 3;
    show(arr,b);
    alert(arr);                 1,2,3,5
    alert(b);                   3
    

    相关文章

      网友评论

          本文标题:(17.05.26)(46)canvas的弧形、文字、线性/径向

          本文链接:https://www.haomeiwen.com/subject/xufwvxtx.html