Canvas
什么是 canvas?
HTML5 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.
标签只是图形容器,您必须使用脚本来绘制图形。
你可以通过多种方法使用 canvas 绘制路径,盒、圆、字符以及添加图像。
创建一个画布(Canvas)
页面创建一个画布容器
<canvas id="clock" width="650" height="650">
</canvas>
canvas起初是空白的。为了展示,首先脚本需要找到渲染上下文,然后在它的上面绘制。[``](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/canvas) 元素有一个叫做 [`getContext()`](https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/getContext) 的方法,这个方法是用来获得渲染上下文和它的绘画功能
var canvas = document.getElementById('colock');
var ctx = canvas.getContext('2d');
绘制矩形
canvas只支持两种形式的图形绘制:矩形和路径(由一系列点连成的线段)。所有其他类型的图形都是通过一条或者多条路径组合而成的
首先,我们回到矩形的绘制中。canvas提供了三种方法绘制矩形:
-
[
fillRect(x, y, width, height)
]绘制一个填充的矩形
-
[
strokeRect(x, y, width, height)
]绘制一个矩形的边框
-
[
clearRect(x, y, width, height)
]清除指定矩形区域,让清除部分完全透明。
上面提供的方法之中每一个都包含了相同的参数。x与y指定了在canvas画布上所绘制的矩形的左上角(相对于原点)的坐标。width和height设置矩形的尺寸。
var ctx = canvas.getContext('2d');
ctx.fillRect(25, 25, 100, 100);
ctx.clearRect(45, 45, 60, 60);
ctx.strokeRect(50, 50, 50, 50);
绘制路径
图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。一个路径,甚至一个子路径,都是闭合的。使用路径绘制图形需要一些额外的步骤。
- 首先,你需要创建路径起始点。
- 然后你使用画图命令去画出路径。
- 之后你把路径封闭。
- 一旦路径生成,你就能通过描边或填充路径区域来渲染图形。
-
beginPath()
新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径。
-
closePath()
闭合路径之后图形绘制命令又重新指向到上下文中。
-
stroke()
通过线条来绘制图形轮廓。
-
fill()
通过填充路径的内容区域生成实心的图形。
// 绘制三角形
ctx.beginPath();
ctx.moveTo(100,100)
ctx.lineTo(150,150)
ctx.lineTo(50,150)
ctx.closePath();//让最后的移动点回到起始点闭合
ctx.stroke();//用线段绘制前面的路径
ctx.fill();//填充前面的路径
注意:如果一个三角形你只生成了两个边的路径,你没有用闭合路径 ctx.closePath(),最后你用ctx.stroke()来绘制只能得到一个你生成的三角形两边,但是你最后用填充绘制 ctx.fill(),你照样可以得到一个完整的填充三角形。
移动笔触
-
moveTo(*x*, *y*)
将笔触移动到指定的坐标x以及y上。
当canvas初始化或者
beginPath()
调用后,你通常会使用moveTo()
函数设置起点。我们也能够使用moveTo()
绘制一些不连续的路径
线
-
绘制一条从当前位置到指定x以及y位置的直线。
该方法有两个参数:x以及y ,代表坐标系中直线结束的点。开始点和之前的绘制路径有关,之前路径的结束点就是接下来的开始点
圆弧
[arc(x, y, radius, startAngle, endAngle, anticlockwise)
]
画一个以(x,y)为圆心的以radius为半径的圆弧(圆),从startAngle开始到endAngle结束,按照anticlockwise给定的方向(默认为顺时针)来生成。
该方法有六个参数:x,y
为绘制圆弧所在圆上的圆心坐标。radius
为半径。startAngle
以及endAngle
参数用弧度定义了开始以及结束的弧度。这些都是以x轴为基准。参数anticlockwise
为一个布尔值。为true时,是逆时针方向,否则顺时针方向
如果要画一个完整的圆,一般开始的弧度为0,结束的弧度为2*Math.PI
使用样式和颜色
[色彩 Colors]
-
[
fillStyle = color
]设置图形的填充颜色。
-
[
strokeStyle = color
]设置图形轮廓的颜色。
注意: 1.一旦您设置了 strokeStyle
或者 fillStyle
的值,那么这个新值就会成为新绘制的图形的默认值。如果你要给每个图形上不同的颜色,你需要重新设置 fillStyle
或 strokeStyle
的值。
2.(1)如果你的生成路径最后使用线段绘制ctx.stroke(),才能使用[strokeStyle = color
]来显示图像轮廓。
(2)如果你的生成路径最后使用填充绘制ctx.fill(),就得使用[fillStyle = color
]来填充颜色。
(3)如果你要设置样式得话必须放在 ctx.fill()或者ctx.stroke()的前面,在绘制前进行设置才会有效。
[线型 Line styles]
-
[
lineWidth = value
]设置线条宽度
-
[
lineCap = type
]设置线条末端样式。
-
[
lineJoin = type
]设定线条与线条间接合处的样式。
-
[
miterLimit = value
]限制当两条线相交时交接处最大长度;所谓交接处长度(斜接长度)是指线条交接处内角顶点到外角顶点的长度。
-
[
getLineDash()
]返回一个包含当前虚线样式,长度为非负偶数的数组。
-
[
setLineDash(segments)
]设置当前虚线样式。
-
[
lineDashOffset = value
]设置虚线样式的起始偏移量。