canvas 应用
- 绘制复杂图形
- 做动画
- 处理图像,视频
- 开发游戏
canvas 是啥
- h5新增的canvas 2d绘图功能
- 是一种HTML标签,可以理解为一张画布,需要用js在canvas里绘制图像
canvas尺寸设置
- canvas默认尺寸宽300,高150
- canvas尺寸需要4000以下
- canvas dom元素 width height不要使用css设置
//方法一
<canvas width='600' height='700'><canvas/>
//方法二
<script>
const canvas=document.getElementById('canvas')
canvas.width=300
canvas.height=150
</script>
浏览器支持
canvas的坐标系
- canvas的坐标系是二维直角坐标系,X越往右越大,Y越往下越大
- canvas坐标系是以像素的宽高为基底的
- 像素的数量等于画布的宽度乘高度
矩形绘制方法
- 填充矩形
fillRect(x,y,w,h)
- 描边矩形
strokeRect(x,y,w,h)
//描边颜色
ctx.strokeStyle='red'
//描边宽度,居中描边
ctx.lineWidth=20
ctx.strokeRect(
20,20,40,50
)
- 清理矩形
clearRect(x,y,w,h)
绘制路径的步骤
- 开始建立路径:beginPath()
- 向路径集合中添加子路径: [ moveTo(x,y);形状;closePath()可选 moveTo(x,y);形状;closePath()可选 moveTo(x,y);形状;closePath()可选 ]
- 显示路径:填充fill(),描边stroke()
- 子路径的形状
直线:lineTo(x,y);lineTo(x,y);lineTo(x,y)
圆弧:arc(x,y,半径,开始弧度,结束弧度,方向)
切线圆弧:arcTo(x1,y1,x2,y2,半径)
二次贝塞尔曲线:quadraticCurveTo(cpx1,cpy1,x,y)
三次贝塞尔曲线:bezierCurveTo(cpx1,cpy1,cpx2,cpy2,x,y)
矩形:rect(x,y,w,h)
canvas样式
- 着***域
- 描边区域 strokeStyle
stroke()
strokeRect()
strokeText()
- 填充区域 fillStyle
fill()
fillRect()
fillText()
- 渐变
- 线性渐变
//创建
gradient=createLinearGradient(x1,y1,x2,y2)
//定义渐变颜色
gradient.addColorStop(position,color)
//赋值
ctx.fillStyle=gradient
- 径向渐变
//创建
gradient=createRadialGradient(x1,y1,r1,x2,y2,r2)
//定义渐变颜色
gradient.addColorStop(position,color)
//赋值
ctx.strokeStyle=gradient
3. 纹理
//建立对象
pattern=context.createPattern(image,"repeat|repeat-x|repeat-y|no-repeat")
//为对象赋值
ctx.fillStyle=pattern
ctx.strokeStyle=pattern
- 描边
- lineCap描边端点样式
butt 没有端点,默认
round 圆形端点
square 方形端点,长一点
- lineJoin 拐角样式
miter 尖角,默认
// miterLimit =1避免拐角厚度过大
round 圆角
bevel 切角
- setLineDash 虚线
//相间
ctx.setLineDash([60,90])
ctx.setLineDash([60,90,120])
// 偏移
ctx.lineDashOffset=-60 //向右偏移60
- 投影
//偏移位置
shadowOffsetX=float
shadowOffsetY=float
//模糊度
shadowBlur=float
//颜色
shadowColor=color