Canvas(2d)入门介绍

277 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

前言

在html5之前,我们在web网页端的绘画、游戏基本上都是用flash及其插件完成的,而flash的使用带来了许多不便。而在html5的canvas出现之后,前端工程师可以直接利用JS操作画布实现复杂的动画、图片绘制甚至游戏响应,自此flash也逐渐淡化和消亡。

canvas是什么

MDN如此描述canvas:

元素可被用来通过 JavaScript(Canvas API 或 WebGL API)绘制图形及图形动画。 Canvas API 提供了一个通过JavaScriptHTML的元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。

通过这段描述,我们可以看到canvas以及canvas API就是提供JS的API在一块画布上进行绘画,进而实现前端的动画、游戏等多媒体行为。

在本文中,我将讲述canvas的2d部分,未来会介绍webGL部分。

如何使用canvas

环境准备

首先我们在html中嵌入一个canvas,用JS获取这个对象

<canvas id="c" width="150" height="150">
</canvas>
var canvas = document.getElementById("c")

接下来我们获取渲染上下文(这里忽略了兼容性测试)

var ctx = canvas.getContext('2d');

绘制基本的图像

首先要了解canvas的坐标,x轴从左到右,y轴从上到下

1.png

canvas只能支持两种图形绘制:矩形和路径

矩形

API作用
fillRect(x, y, width, height)绘制填充矩形
strokeRect(x, y, width, height)绘制边框矩形
clearRect(x, y, width, height)清楚矩形区域

路径

API作用
beginPath()新建路径,类似把笔放置到画布上
closePath()闭合路径,也就是把路径封闭并且拿起笔
stroke()把笔走过的路径的轮廓绘制出来
fill()把笔走过的路径的填充绘制出来
moveTo()移动画笔

当然,路径绘图还有lineTo、arc、arcTo以及贝塞尔曲线操作,这里不一一赘述

Path2D

返回一个新初始化的 Path2D 对象 ,通俗地说,可以理解为把路径储存到对象中,进而模块化地进行绘画。而path2D也可以使用svg语法进行创建。

画笔设置(样式和颜色)

颜色(设置CSS3颜色标准值有效字符串)

属性或API含义
ctx.fillStyle填充颜色
ctx.strokeStyle轮廓颜色
ctx.globalAlpha颜色透明度
ctx.createLinearGradient(x1,y1,x2,y2)线性渐变
ctx.createRadialGradient(x1,y1,r1,x2,y2,r2)径向渐变
lineargradient.addColorStop(0~1的标度,颜色值)表示渐变中颜色所在的相对位置。

线形

属性作用
lineWidth(number)线宽
lineCap(buttroundsquare)设定线条末端样式
lineJoin(roundbevelmiter)设定线条与线条间接合处的样式
miterLimit(number)限制当两条线相交时交接处最大长度
方法setLineDash()设置虚线样式

实例

基于上述入门级的API,我们可以开始画图了