canvas使用

canvas使用

1 canvas绘制基本

1 概念

HTML5<canvas>元素用于图形的绘制,区别于css,它的绘制通过javascript来完成绘制的

<canvas>标签只是图形容器,必须使用及保本来绘制图形

Canvas API主要聚焦与2D图形。同时<canvas>元素的WebGL API则用于绘制硬件加速的2D和3D图形

2 绘制矩形

<canvas id="canvas" width="200" height="200"></canvas>
<script>
    /* 获取画布 */
    var canvas = document.getElementById("canvas");
    /* 获取canvas上下文 getContent('2d') 可以返回一个对象,该对象提供了绘图的方法和属性 */
    const ctx = canvas.getContext('2d');
    /* 填充颜色 */
    ctx.fillStyle = '#ff2d51';
    /* 绘制矩形fillRect(x,y,width,height) x,y 分别是横轴 纵轴起点位置,width height 表示绘制的宽,高大小*/
    ctx.fillRect(10,10,100,100);
</script>

3 canvas中的坐标

canvas是一个二维网络

canvas的左上角坐标为(0,0)

绘制矩形fillRect(x,y,width,height) x,y 分别是横轴 纵轴起点位置,width height 表示绘制的宽,高大小

4 绘制途径

所谓的路径:就是连续的坐标点的集合

在canvas上画线,可以使用一下两种方法

  • moveTo(x,y) 定义线条开始坐标
  • lineTo(x,y) 定义线条结束坐标

绘制线条必须使用到stroke()方法,执行绘制

<canvas id="canvas" width="200" height="200"></canvas>
<script>
    /* 获取画布 */
    var canvas = document.getElementById("canvas");
    /* 获取canvas上下文 getContent('2d') 可以返回一个对象,该对象提供了绘图的方法和属性 */
    const ctx = canvas.getContext('2d');
    /* 绘制路径 */
    ctx.moveTo(0,0)
    ctx.lineTo(100,100)
    /* 填充颜色 */
    ctx.strokeStyle = '#ff2d51';
    ctx.stroke();
</script>

5 绘制圆

<canvas id="canvas" width="200" height="200"></canvas>
<script>
    /* 获取画布 */
    var canvas = document.getElementById("canvas");
    /* 获取canvas上下文 getContent('2d') 可以返回一个对象,该对象提供了绘图的方法和属性 */
    const ctx = canvas.getContext('2d');
    /* 绘制路径 */
    ctx.beginPath()
    /* arc(x,y,radius,startAngle,endAngle) 2*Math.PI=圆的周长 */
    ctx.arc(100,100,50,0,Math.PI*2)
    ctx.closePath()
    /* 填充颜色 */
    ctx.fillStyle = '#ff2d51';
    ctx.fill();
    /* 边颜色 */
    ctx.strokeStyle = '#333';
    /* 边宽 */
    ctx.lineWidth = 5;
    ctx.stroke();
</script>
1 绘制多个圆
<canvas id="canvas" width="400" height="400"></canvas>
<script>
    /* 获取画布 */
    var canvas = document.getElementById("canvas");
    /* 获取canvas上下文 getContent('2d') 可以返回一个对象,该对象提供了绘图的方法和属性 */
    const ctx = canvas.getContext('2d');
    /* 绘制路径 */
    ctx.beginPath()
    /* arc(x,y,radius,startAngle,endAngle) 2*Math.PI=圆的周长 */
    ctx.arc(200,200,100,0,Math.PI*2)
    ctx.closePath()
    /* 填充颜色 */
    ctx.fillStyle = '#ff2d51';
    ctx.fill();

    // 后绘制 覆盖先绘制的

    ctx.beginPath()
    /* arc(x,y,radius,startAngle,endAngle) 2*Math.PI=圆的周长 */
    ctx.arc(200,200,50,0,Math.PI*2)
    ctx.closePath()
    /* 填充颜色 */
    ctx.fillStyle = '#333';
    ctx.fill();
    ctx.stroke();
</script>
2 绘制动画的圆
<canvas id="canvas" width="400" height="400"></canvas>
<script>
    /* 获取画布 */
    var canvas = document.getElementById("canvas");
    /* 获取canvas上下文 getContent('2d') 可以返回一个对象,该对象提供了绘图的方法和属性 */
    const ctx = canvas.getContext('2d');
    var increateFlag = true;
    var radius = 50
    function draw(){
        /* 清除指定矩形内的形状 */
        ctx.clearRect(0,0,canvas.width,canvas.height)
        /* 绘制路径 */
        ctx.beginPath()
        /* arc(x,y,radius,startAngle,endAngle) 2*Math.PI=圆的周长 */
        ctx.arc(200,200,radius,0,Math.PI*2)
        ctx.closePath()
        /* 填充颜色 */
        ctx.fillStyle = '#ff2d51';
        ctx.fill();
        ctx.stroke();

        if(radius > 100){
            increateFlag = false;
        }else if(radius < 50){
            increateFlag = true;
        }
        if(increateFlag){
            radius++;
        }else{
            radius--;
        }
    }

    // draw();
    setInterval(draw,20);
</script>
3 绘制多圈动画
<canvas id="canvas" width="400" height="400"></canvas>
    <script>
        /* 获取画布 */
        var canvas = document.getElementById("canvas");
        /* 获取canvas上下文 getContent('2d') 可以返回一个对象,该对象提供了绘图的方法和属性 */
        const ctx = canvas.getContext('2d');
        var increateFlag = true;
        var radius = 50
        function draw(){
            /* 清除指定矩形内的形状 */
            ctx.clearRect(0,0,canvas.width,canvas.height)

            /* 绘制路径 */
            ctx.beginPath()
            /* arc(x,y,radius,startAngle,endAngle) 2*Math.PI=圆的周长 */
            ctx.arc(200,200,radius,0,Math.PI*2)
            ctx.closePath()
            /* 填充颜色 */
            ctx.fillStyle = '#ff2d51';
            ctx.fill();

            // 后绘制 覆盖先绘制的

            /* 绘制路径 */
            ctx.beginPath()
            /* arc(x,y,radius,startAngle,endAngle) 2*Math.PI=圆的周长 */
            ctx.arc(200,200,25,0,Math.PI*2)
            ctx.closePath()
            /* 填充颜色 */
            ctx.fillStyle = 'blue';
            ctx.fill();

            ctx.stroke();

            if(radius > 100){
                increateFlag = false;
            }else if(radius < 50){
                increateFlag = true;
            }
            if(increateFlag){
                radius++;
            }else{
                radius--;
            }
        }

        // draw();
        setInterval(draw,20);
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值