canvas---画布

在HTML5新增新的标签,名为画布,可以使用JS在上面完成对应的画的操作。正常情况我们可以把它当成一个img看待。

如何使用canvas

HTML中使用canvas标签

<canvas></canvas>

canvas默认的宽高是300x150的尺寸,如果想要修改这个值,不能使用css修改,需要直接设置对应的width和height属性,这个是html属性,不是css属性

<canvas width="500" height="300"></canvas>

如果我们想要设置要给全屏的canvas,需要使用js进行设置,设置为全屏的宽高

let canvas = document.querySelector('canvas')
canvas.width = window.innerWidth
canvas.height = window.innerHeight

当我们设置了全屏后,会有滚动条,原因和img标签一样,行内块元素默认下方会有空白。一定要记得去掉body的margin值

canvas {
  display: block;
}

/* 或者 */
canvas {
  vertical-align: middle;
}

JavaScript中进行绘图

在画布上进行绘制需要使用canvas的方法获取一个值

let canvas = document.querySelector('canvas')
// 获取ctx
let ctx = canvas.getContext('2d')

上面两行代码是固定写法。几乎上所有的绘图操作,都是在ctx对象中的。

如何画

坐标

画布的左上角是0, 0的位置,x轴向右为正方向,y轴向下为正方向。

描边

我们在绘制好路径后,可以通过ctx.stroke()进行描边操作

填充

我们在绘制好路径后,可以通过ctx.fill()进行填充操作

画线

可以使用moveTo和lineTo进行划线操作.

ctx.moveTo(x, y)指起始点,参数分别指起始点坐标

ctx.lineTo(x, y)指终点,参数为终点坐标。

设置后,我们还需要通过ctx.stroke()进行描边。

线可以跟着画很多条。

ctx.moveTo(0, 0)
ctx.lineTo(100, 100)
ctx.stroke()

画矩形

画矩形有很多方法

  • ctx.fillRect()
  • ctx.strokeRect()
  • ctx.rect() 再进行描边或者填充
  • clearRect()

四个方法参数一致,都有四个参数,分别为x, y, w, h

x, y表示矩形左上角点的坐标。w, h表示宽高

ctx.fillRect(0, 0, 100, 50) // 填充
ctx.strokeRect(0, 0, 100, 50) // 描边

ctx.rect(0, 0, 100, 50)
ctx.fill()
// 或者 
ctx.rect(0, 0, 100, 50)
ctx.stroke()

最后一个方法,是清除掉一块矩形区域

ctx.clearRect(0, 0, 100, 100)

清除画布在动画阶段有用。

坐标系

画圆弧

弧度单位 180deg = Math.PI rad

ctx.arc(x, y, 半径, 开始弧度, 结束弧度, 是否逆时针)

ctx.stroke() // 描边
ctx.fill() // 填充

画图

把一个图片或者视频的一帧绘制到canvas上

ctx.drawImage(img或者video的dom对象, 很多参数)

该方法有三种用法

ctx.drawImage(对象, cx, cy)

该操作不会对图片进行缩放,直接把原尺寸放在canvas对应的位置上。

ctx.drawImage(image, cx, cy, cw, ch)

cx、cy表示canvas上的位置

cw表示在canvas上绘制的图片宽度

ch表示在canvas上绘制的图片高度

这个操作会把图片完整绘制,进行缩放,如果canvas不够大,就只显示canvas的大小

drawImage(image, sx, sy, sw, sh, cx, cy, cw, ch)

这个操作,可以把图片上某个区域裁切,然后画到canvas上。

颜色

描边颜色

通过设置ctx.strokStyle = "颜色色值"就可以把当前path中的描边颜色修改

填充颜色

通过设置ctx.fillStyle = "颜色色值"就可以把当前path中的填充颜色修改

canvas中动画的原理是什么

canvas中的动画原理和dom动画原理不一样,DOM动画是改变位置或者属性即可,canvas需要先清除画布内容再重新绘制。

QRCode.js

利用一定的规则,把文本变成二维码。

new QRCode(要生成到哪个元素中, "文本")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值