canvas基础

第1章 画布元素的使用

绘制线条

1. 画布的作用

Canvas 元素作为HTML5标准的一部分,允许你通过脚本动态渲染图像。每一个 canvas 元素都有一个上下文环境对象,在其中可以绘制任意图形。

2. 坐标的介绍

在这里插入图片描述

3. 简单的使用
<body>
    <canvas id="cvs" style="border: solid 1px #ccc"></canvas>

    <script type="text/javascript">
        // 1.获取画布元素
        var cvs=document.getElementById("cvs");
        // 2.获取工具集
        var cxt=cvs.getContext("2d");
        // 3.定位开始点
        cxt.moveTo(30,30);
        // 4.拖动并结束点
        cxt.lineTo(90,30)  //保存内存
        // 5.绘制点
        cxt.stroke();
    </script>
</body>
4. 绘制不同线条颜色三角形

//设置笔触图形的颜色。context.strokeStyle=color
//设置线条的宽度,以像素为单位 。context.lineWidth=number
//设置开始一条路径,或重置当前的路径。context.beginPath()

<body>
    <canvas id="cvs" style="border: solid 1px #ccc"></canvas>

    <script type="text/javascript">
        //获取画布元素
        var cvs=document.getElementById("cvs");
        //获取工具集
        var cxt=cvs.getContext("2d");
        //设置绘制图形的线条宽度
        cxt.lineWidth=5;

         
        //设置绘制图形的颜色
        cxt.strokeStyle='red';
        //定位一个起始点
        cxt.moveTo(50,50);
        //绘制第二个点
        cxt.lineTo(150,50)
        //绘制线条
        cxt.stroke()
        //重置当前路径
        cxt.beginPath();

        //设置绘制图形的颜色
        cxt.strokeStyle='blue';
        //设置绘制第二条线起始点
        cxt.moveTo(150,50);
        //绘制第二个点
        cxt.lineTo(80,100)
        //绘制线条
        cxt.stroke()
        //重置当前路径
        cxt.beginPath(); 

        //设置绘制图形的颜色
        cxt.strokeStyle='green';
        //设置绘制第二条线起始点
        cxt.moveTo(80,100);
        //返回原始点
        cxt.lineTo(50,50)
        //绘制线条
        cxt.stroke()

    </script>

第2章 其他绘制API

1. 文字绘制API

方法:context.fillText(text,x,y,[maxWidth]); //在指定位置和宽度内绘制文字,max最大宽度
属性:

  • context.font=‘字体属性’ //设置字体名称和形状
  • context.textAlign=‘水平方位值’ //center | left | right //设置文本内容对齐方式
  • context.textBaseline=‘垂直方位值’ //top | middle | bottom
    注意:所有的属性都要在绘制之前设置
<body>
    <canvas id="cvs" style="border: solid 1px #ccc"></canvas>
    <script type="text/javascript">
        //获取画布元素
        var cvs=document.getElementById("cvs");
        //获取工具集
        var cxt=cvs.getContext("2d");
        //设置文字的样式
        cxt.font='bold 20px 黑体';
        
        cxt.strokeStyle='red';
        cxt.moveTo(10,30);
        cxt.lineTo(120,30);
        cxt.stroke();

        cxt.beginPath();
        cxt.moveTo(30,10);
        cxt.lineTo(30,120);
        cxt.stroke();
       
        //水平方向居中对齐
        cxt.textAlign='center';
        //垂直方向居中对齐
        cxt.textBaseline='middle';
        //调用工具集中的API绘制文字
        cxt.fillText('画布',30,30);
        //将绘制内容另存为图片
        var imgUrl=cvs.toDataURL('image/png',1);
        //输出到控制台
        console.log(imgUrl);
    </script>
</body>

问答区:fillText和strokeText的区别

2. 绘制矩形和圆形及图片

绘制矩形和圆形

//绘制矩形的路径
context.rect(x,y,width,height);
//绘制无填充的矩形
context.strokeRect(x,y,width,height);
//绘制填充的矩形
context.fillRect(x,y,width,height);
//清空指定矩形内像素
context.clearRect(x,y,width,height);
//在指定位置绘制一个圆形
context.arc(x,y,r,sAngle,eAngle,clockwise);

<body>
    <canvas id="cvs" style="border: solid 1px #ccc"></canvas>
    <script type="text/javascript">
        //获取画布元素
        var cvs=document.getElementById("cvs");
        //获取工具集
        var cxt=cvs.getContext("2d");
        
        //先绘制路径
        //cxt.rect(30,30,50,50);
        //再描边
        //cxt.stroke();
        //再填充
        //cxt.fill();
        //调用一次方法完成
        //cxt.strokeRect(30,30,50,50);

        cxt.fillRect(30,30,50,50);
        //清空绘制好的正方形
        cxt.clearRect(30,30,50,50);
        //绘制一个半径为30的圆形
        cxt.arc(50,50,30,0,Math.PI,true);
        //绘制圆形的边
        cxt.fill();
    </script>
</body>
绘制图片

//在画布上绘制固定坐标的图像
context.drawImage(img,x,y);
//在画布上绘制不仅固定坐标,且规定图像的宽度和高度图像
context.drawImage(img,x,y,width,height);
//在画布上剪切图像,并在画布上绘制被剪切的部分
context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

<body>
    <canvas id="cvs" width="320" height="480" style="border: solid 1px #ccc"></canvas>
    <script type="text/javascript">
        //获取画布元素
        var cvs=document.getElementById("cvs");
        //获取工具集
        var cxt=cvs.getContext("2d");

        //先定义图片对象
        var img=new Image();
        img.src='img/dog.jpg';
        img.onload=function(){
            //绘制加载好的图片
            //cxt.drawImage(this,10,10);
            //绘制加载好的指定宽高的图片
            //cxt.drawImage(this,10,10,133,200);
             //绘制加载放大的图片
            cxt.drawImage(this,120,120,100,100,10,10,300,300);
        }
    </script>
</body>

关于canvas的更多信息@点击了解更多

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值