HTML5中canvas标签用法

一、前言

canvas主要是创建画布;之后可以通过js在画布上实现绘画

创建画布

     <canvas width="600" height="400" id="mycancas">
      当前浏览器版本不支持,请升级
      </canvas>

根据id获取画布

  //得到canvas的画布
    var canvas=document.getElementById("mycancas");
    //得到画布的上下文,上下文有两个 2d和3d
    //所有的图形绘制都是通过ctx属性或者方法进行设置的,和canvas标签没有关系了
     var ctx=canvas.getContext("2d")

之后的绘画就和canvas没关系了,主要是获取的Context属性ctx

二、绘制(常用API)

1、矩形 (可以直接绘制)

  // 绘制填充矩形
   ctx.fillRect(x,y,w,h);  参数:(左上角xy   相对画布)
  // 绘制矩形边框
   ctx.strokeRect(x,y,w,h);

2、清除、擦除

ctx.clearRect(x,y,w,h); // (擦除一个矩形范围)

3、颜色

// 设置边框颜色
  ctx.strokeStyle='red';
// 设置填充颜色
 ctx.fillStyle='green';

4、绘制路径 画弧 和线需要

     ctx.beginPath()  //创建一个路径
   为了设置一个不规则的多边形状态
   路径是闭合的,使用路径进行绘制的时候需要既定的步骤
   需要设置路径的起点
   使用绘制命令画出路径
   封闭路径
   填充或者绘制已经封闭的路径的形状

示例:

  ctx.beginPath()  //创建一个路径
  ctx.moveTo(200,100);  //第一个连接点 会把所有点连接起来
    //描述进行路径
   ctx.lineTo(200,200); //第二个点
   ctx.lineTo(300,100); //第三个点
    ctx.closePath();  //封闭路径,去除这端就是绘制不封闭的图形,即线
   //绘制这个不规则的图形
    ctx.strokeStyle="red" //设设置边框颜色
    ctx.stroke(); //开始绘制(把前面点连接成封闭图形),或者ctx.fill(); 就是填充

6、圆弧 (需要在路径中绘制)

   //创建一个路径
  ctx.beginPath();
   //x(圆心)  y    r  起始弧度 接收弧度 顺时针
  ctx.arc(200,200,100,1,2*3.14,false); //(x,y,r,0,2*3.14,true)   x(圆心x)   y(圆心)  0,1(表示一个弧度 最大为2派)  false(表示顺时针)
   ctx.stroke(); //绘制边框 或者  ctx.fill();绘制填充

7、透明度

   //透明度
  ctx.globalAlpha=1; //设置下面图形的透明度  1表示不透明

8、线形 (需要在路径中绘制)

(1)、设置画线的粗细

 ctx.lineWidth=5;
不设置默认是1、一次绘画只能设置一次,设置多次以最新设置的为准,
也能设置ctx.strokeRect()  矩形边框的粗细

示例:

     ctx.beginPath(); //创建路径
     ctx.lineWidth=5; //设置粗细
     ctx.moveTo(100,100); //起始
     ctx.lineTo(150,200); //经过点
     ctx.lineTo(200,200); //经过点
     ctx.stroke(); //绘制  边框(不填充)

(2) 、线段末端的状态

 ctx.lineCap="round";
 butt :线段末端以方形结束,默认
 round: 线段末端以圆形结束
 使用方法和 ctx.lineWidth 一致,直接放到画线途中即可

(3)、连接处 ,折线端点处的部分

 ctx.lineJoin="round";
 round: 圆弧状态
 miter:方角 默认
 bevel:平滑

(4)、设置虚线

 ctx.setLineDash([3,20])  ([单个虚线的长度,虚线小段间的距离])
 使用方法和前面一致,加入在绘制过程中即可

9、其他的绘制

(1)、文字 (可以直接绘制)

 ctx.font="20px 宋体";    "字体大小 字体类型 "
 ctx.fillText("你好,我是30px的宋体文字",100,100); ("文字",x,y) x和y表示首个字出现的位置

(2)、渐变

 先设置渐变曲线起始位置 在设置颜色
 在把属性复制给 ctx.fillStyle

             var ctxx=ctx.createLinearGradient(100,100,200,200); (x1,y1,x2,y2) 渐变曲线起始位置
            ctxx.addColorStop(0,"red");  //添加颜色 0表示起始
            ctxx.addColorStop(0.8,"purple"); 添加颜色 0.8 表示起始  末端为1

            ctx.fillStyle=ctxx;   把渐变颜色设置为当前绘制的颜色
            ctx.fillRect(100,100,100,100); //绘制填充矩形

(3)、阴影

  ctx.shadowOffsetX=1; //阴影偏移状态
  ctx.shadowOffsetY=1; //阴影偏移状态
  ctx.shadowBlur=10;  //阴影模糊程度
 ctx.shadowColor="red"; //阴影颜色
 ctx.font="20px 宋体";
 ctx.fillText("你好,我是30px的宋体文字",100,100);

10、添加图片

canvas中使用drawImage来绘制图片,主要是把外部的图片导入进行绘制到画布上
 //第一步创建一个image元素
   var image=new Image();
  //第二步用src设置图片的地址
   image.src="we.png";
   //第三步在onLoad之后再进行绘制图片,否则不会渲染
    image.onload=function (){
          ctx.drawImage(image,100,100,100,100); // (图片 加载位置x y  图片宽高w h)
            }
   

11、资源管理器

在开发的时候,有些静态资源(图片等)是需要请求回来的,否则如果直接开始
某些静态资源没有就会报错或者空白,
全部静态资源加载完成时候才能进入网站
所以在canvas渲染过程中进行对图片的资源加载
  (1)、获取JSON对象长度
   this.dao={
       "imj1":"qw2.png",
      "imj2":"we.png"
      }
      var leng= Object.keys(this.dao);  //通过Object.keys的方式得到JSON数据
      在创建图片
      提示信息可以使用文本绘制

12、变形

      canvas是可以进行变形的,但是变形的不是元素,而是ctx,ctx是整个画布的渲染区域,整个画布在变形
     
         save()保存画布(canvas)的所以状态
      保存属性(移动、旋转、缩放) ,保存除了绘制形状之外的属性

      restore() 恢复canvas的状态
      它们都没有参数。Canvas的状态就是当前画面应用的所有样式和变形的一个快照。

   平移:   ctx.translate(50,50); 是css内容 下面要绘制的内容进行平移
   旋转:   ctx.rotate(3.14);  //下面图形内容进行旋转 弧度制
   缩放:   ctx.scale(1,1); // (同时改变xw,同时改变yh) 按倍数

三、动画

动画原理 清屏--绘制的循环

通过清屏ctx.clearRect(x,y,w,h); // (擦除一个矩形范围) 和绘画实现动态效果

再通过定时器反复执行

//定时器
setInterval(()=>{
  Fel.abc();
},30);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值