canvas
Posted 不完美的小孩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canvas相关的知识,希望对你有一定的参考价值。
一、canvas的概述
1、定义
<canvas>
是H5新增的标签
- canvas提供给了javascript绘图接口
- canvas绘图建立在坐标系上
2、应用领域
- 炫酷特效
- 可视化数据(图表)
- 游戏
- 大型应用(地图)
- 在线系统(在线ps)
3、canvas标签
- 属性width
- 属性height
- 方法getContext()可选参数"2d"/"webgl(3d)" 返回上下文环境
4、绘图环境
- 该对象提供API,让JavaScript来绘制图形
![](https://image.cha138.com/20210607/d4f12ddbd80340fc8c55b57d51f7fb6c.jpg)
二、绘图基础
1、路径的开启和闭合
- beginPath()开启路径
- closePath()关闭路径(把路径闭合)
![](https://image.cha138.com/20210607/8b04c00d99d2430084f7cab9d937641b.jpg)
浏览器
![](https://image.cha138.com/20210607/74b6d6b6c79e424dbd6e556b51326172.jpg)
2、设置起点
3、画线
4、描边
- strokeWidth属性设置描边线的粗细
- strokeStyle属性设置描边颜色
- stroke() 绘制
![](https://image.cha138.com/20210607/e641852ef0f7457a9702c1e78e80a208.jpg)
5、填充
- fillStyle属性填充颜色
- fill()执行填充
6、快速矩形
- rect(x,y,width,height)绘制矩形路径
- strokeRect(x,y,width,height)描边矩形
- fillRect(x,y,width,height)填充矩形
- clearRect(x,y,width,height)清除矩形(可以用来清除屏幕)
![](https://image.cha138.com/20210607/0ea5e3ad7d8c41be9cce53a6e1d1752a.jpg)
浏览器
![](https://image.cha138.com/20210607/85b5fa8334664d3593089f50b42a3416.jpg)
7、圆弧
- arc(x,y,radius,start,end,true/false)
- start表示开始的弧度(位置)0弧度是三点钟方向
- end表示结束的弧度(位置)
- 默认false表示顺时针
![](https://image.cha138.com/20210607/b1b1c06679dc46bb9d600ae3fe37f3ba.jpg)
浏览器效果
![](https://image.cha138.com/20210607/7d2929cde2e1461bbcc25571cbc848ad.jpg)
8、绘制文字
- font属性 设置文字的风格、大小、字体、值同css的font属性
- textAlign属性 文字水平对齐方式(start/left/right/center/end)
![](https://image.cha138.com/20210607/c5b091ff0c254b738cb8c63fd5a84d2d.jpg)
![](https://image.cha138.com/20210607/a020c4ff449d476aa6cbde6dcd686470.jpg)
- textBaseline属性 文字的垂直对齐方式(top/middle/bottom/alphabetic)
- strokeText(text,x,y)描边字
- fillText(text,x,y)填充字
- measureText(text)返回对象文字的宽度 取决于字体大小
![](https://image.cha138.com/20210607/0ffd92ba41e24c3f8f9240a3d840d081.jpg)
![](https://image.cha138.com/20210607/cd2433c13e3e497bbca5d98e1a927cbb.jpg)
![](https://image.cha138.com/20210607/4648753bffea4e4f978ce9a420c37131.jpg)
三、Canvas基础
1、绘制图片
- drawImage(img,x,y)简单绘制图片
- drawImage(img,x,y)绘制图片并指定在画布上的大小
- drawImage(img,sx,sy,sw,sh,x,y,w,h)裁剪图片并把裁剪部分绘制到画布
- drawImage(图片,图片横坐标,图片纵坐标,裁剪宽,裁剪高,画布横坐标,画布纵坐标,画布宽,画布高)
- 其中img是图片的dom对象,配合onload事件
![](https://image.cha138.com/20210607/6d1c33a84cbc4bed82bd10c0b895581c.jpg)
![](https://image.cha138.com/20210607/eb10e9287aba46f7831c934f546c94e7.jpg)
2、设置阴影
- shadowColor 阴影颜色
- shadowBlur 阴影模糊值
- shadowOffsetX 阴影X偏移量
- shadowOffsetY阴影Y偏移量
3、渐变
- createLinearGradient(x,y,x1,y1)创建线性渐变
- createRadialGradient(cx1,cy1,r1,cx2,cy2,r2);
4、线条样式
- lineCap 属性 线条两端样式 butt/round/square
- lineCap 设置或返回线条的结束端点(线头、线冒)样式
![](https://image.cha138.com/20210607/369e236b216a4ad5b7951374b6d7b2ce.jpg)
- lineJoin 属性 线条相交样式 miter/bevel/square
- lineJoin 设置或返回两条线相交时,所创建的拐角类型
![](https://image.cha138.com/20210607/f5bfd2161bcb44ec87d859964ddbd4f6.jpg)
以上是关于canvas的主要内容,如果未能解决你的问题,请参考以下文章
HTML5 Canvas 支持和 Android Webview
微信小程序海报 uniapp
微信小程序海报 uniapp
iPad 对 Canvas 标签的限制;画布标签动画上的网页崩溃
简单的圆形下载进度条
如何删除画布周围的灰色边框