你会画小猪佩奇吗?—— canvas
简介
Canvas 是 HTML5 新增的一个标签属性,一个可以使用脚本在其中绘制图像的 HTML 元素。它可以用来制作照片或者制作简单的动画,甚至可以进行实时的视频处理和渲染。Canvas 是由 HTML 代码配合高度和宽度属性而定义出的可绘制区域。JavaScript 代码可以访问该区域,类似于其他通用的 API,通过一套完整的绘图函数来动态生成图形。
应用场景
游戏
图表
动画
HTML5 动效(codepen.io)
如何使用 Canvas
添加
canvas标签
<canvas id="myCanvas" width="500" height="500"></canvas>获得
canvas元素
const canvas = document.getElementById("myCanvas");获得
canvas上下文对象
const ctx = canvas.getContext("2d");
// 有两个参数getContext()可以采取。一个是渲染2D元素的标准2d上下文。另一种使用的webGL技术仍处于起步阶段。因此,大多数情况下,您可以在任何地方找到第二个画布的上下文(截至目前)两个对象
元素对象(canvas 元素)和上下文对象(通过
getContext('2d)方法获取到的CanvasRenderingContext2D对象)元素对象相对于我们的画布,上下文对象相当于画笔,我们接下来的所有操作是基于上下文对象的。
线段
注意:
fill和stroke方法都是作用在当前的所有子路径完成一条路径后要重新开始另一条路径时必须使用
beginPath()方法,beginPath 开始子路径的一个新的集合
代码示例

矩形
代码示例

弧形
代码示例

圆角
代码示例

贝塞尔曲线
坐标轴转换
填充图案
渐变
代码示例

阴影
文本

代码示例

线段样式
lineGap 指定线条末端的样式
butt(默认值,末端为矩形)
round(末端为圆形)
square(末端为突出的矩形,矩形宽度不变,高度为线条宽度的一半)。
lineJoin 指定线段交点的样式
round(交点为扇形)
bevel(交点为三角形底边)
miter(默认值,交点为菱形)
ctx.miterLimit 指定交点菱形的长度,默认为 10
当 lineJoin 是 miter 时,用于控制斜接部分的长度,如果斜接长度超过 miterLimit 的值,变成 bevel
代码示例

裁剪
代码示例

全局透明度
绘制图片
如何解决 Canvas 高分屏模糊问题
在分辨率比较高的屏幕,例如 ip6/6s/mac 等机器上,因为 canvas 绘制的是位图,所以会导致模糊,解决方法是根据屏幕分辨率修改 canvas 样式代码中的宽和高与 canvas 的 width 和 height 属性的比例
最后更新于