美文网首页
canvas学习

canvas学习

作者: chloe2661 | 来源:发表于2017-01-19 00:15 被阅读0次

    <canvas>h5新标签:定义图形,比如图表和其他图像,必须使用脚本来绘制图形。
    兼容性:IE9+ chrome FF
    设置画布大小(属性)

    <canvas id="c1" width="800" height="600"></canvas>
    

    例:画一个三角形(画图步骤)
    1.获取画布
    2.创建画笔
    3.选区:从起始点->连接点
    4.描边/填充

    var oC=document.getElementById('c1');
    var gd=oC.getContext('2d');
    gd.moveTo(200,200);//起始点
    gd.lineTo(585,390);//连接点
    gd.lineTo(157,393);
    gd.closePath();//最后一条线自动连接
    gd.lineWidth = 20;//线条的宽度,不加px
    gd.strokeStyle='red';//描边颜色,需要放在gd.stroke()上面
    gd.stroke();//描边
    //gd.fillStyle='red';更改填充颜色,需要放在gd.fill()上面
    //gd.fill();填充,默认黑色
    

    如果我再画一个图形,设置一个绿色,那么会是什么情况呢?
    答案是两个图形都会变成绿色。
    注意:
    1.先设置好画笔,做好选区后填充或描边
    2.画图形之前应该抬起画笔

    gd.beginPath()
    

    例:下面写一个建议画板
    1.简单布局

    <canvas id="c1" width="800" height="600"></canvas>
    <style>
           body{background: #000;}
           canvas{background: #fff; }
     </style>   
    

    2.写js

    window.onload=function(){
        var oC=document.getElementById('c1');
        var gd=oC.getContext('2d');
        oC.onmousedown=function(ev){
            gd.moveTo(ev.pageX,ev.pageY);
            oC.onmousemove=function(ev){
                gd.lineTo(ev.pageX,ev.pageY);
                gd.stroke();
            }
                oC.onmouseup=function(){
                        oC.onmousemove=null;
                        oC.onmouseup=null;
                }
        }
    }
    

    注意:如果canvas布局中加一个margin: 100px;那么会出现什么问题呢?
    答案是将上文中gd.moveTo和gd.lineTo改为:

    gd.moveTo(ev.pageX-oC.offsetLeft,ev.pageY-oC.offsetTop);
    gd.lineTo(ev.pageX-oC.offsetLeft,ev.pageY-oC.offsetTop);
    

    形状(矩形:四个值分别代表x,y,width,height)

    gd.strokeStyle = 'red';//将矩形的线框设置成红色
    gd.strokeRect(100,100,200,100);//线框矩形
    gd.fillStyle = 'green';//设置矩形的填充颜色为绿色
    gd.fillRect(100,100,200,100);//填充好的矩形
    

    例:柱状图
    未完待续

    相关文章

      网友评论

          本文标题:canvas学习

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