跳转至主要内容

大球的小窝

canvas

vkalo
最后编辑于 2019年4月23日

Canvas是HTML5新增的组件,它就像一块画布,使用JavaScript在上面绘制各种图表、动画等,它的出现使得程序员不再需要通过JS与flash交互生产网页动画,而直接通过js再canvas内进行作图。


var canvas = document.getElementById(‘test-canvas’);

通过这段代码就可以获取对应的canvas元素

ctx = canvas.getContext(‘2d’);//获取二维制图对象
gl = canvas.getContext(“webgl”);//获取三维制图对象

得益与H5内的webgl标准,canvas不仅能够作为二维画布,也能作为三维图形的容器。(本文主要介绍二维制图内容)

canvas制图过程有点像先挑选合适的笔,调整颜色,然后下笔作画。

canvas不同于SVG,SVG同样是通过js作图,但svg作图结果会生成对应的svgDOM,因此一次作图后,SVG可以获取生成的DOM进行修改。而canvas只有一个元素标签,即canvas本身,canvas作图依赖于像素,生成后的图形无法获取修改,如果希望修改canvas图片,就需要对相应的像素区域进行清楚和重绘。

因此我把canvas的api大致分为以下几类:

1.样式类型

颜色、样式和阴影

属性描述
fillStyle设置或返回用于填充绘画的颜色、渐变或模式。(区域)
strokeStyle设置或返回用于笔触的颜色、渐变或模式。(线)
shadowColor设置或返回用于阴影的颜色。
shadowBlur设置或返回用于阴影的模糊级别。
shadowOffsetX设置或返回阴影与形状的水平距离。
shadowOffsetY设置或返回阴影与形状的垂直距离。

createLinearGradient()

创建线性渐变(用在画布内容上)。

createPattern()

在指定的方向上重复指定的元素。

createRadialGradient()

创建放射状/环形的渐变(用在画布内容上)。

addColorStop()

规定渐变对象中的颜色和停止位置。

线条样式

属性描述
lineCap设置或返回线条的结束端点样式。
lineJoin设置或返回两条线相交时,所创建的拐角类型。
lineWidth设置或返回当前的线条宽度。
miterLimit设置或返回最大斜接长度。

2.形状及文本

形状

矩形

方法描述
rect()创建矩形。
fillRect()绘制”被填充”的矩形。
strokeRect()绘制矩形(无填充)。
clearRect()在给定的矩形内清除指定的像素。

路径

方法描述
fill()填充当前绘图(路径)。
stroke()绘制已定义的路径。
beginPath()起始一条路径,或重置当前路径。(重置新画笔)
moveTo()把路径移动到画布中的指定点,不创建线条。
closePath()创建从当前点回到起始点的路径。(形成闭合图形)
lineTo()添加一个新点,然后在画布中创建从该点到最后指定点的线条。
clip()从原始画布剪切任意形状和尺寸的区域。
quadraticCurveTo()创建二次贝塞尔曲线。
bezierCurveTo()创建三次贝塞尔曲线。
arc()创建弧/曲线(用于创建圆形或部分圆)。
arcTo()创建两切线之间的弧/曲线。
isPointInPath()如果指定的点位于当前路径中,则返回 true,否则返回 false。

文本

属性描述
font设置或返回文本内容的当前字体属性。
textAlign设置或返回文本内容的当前对齐方式。
textBaseline设置或返回在绘制文本时使用的当前文本基线。
方法描述
fillText()在画布上绘制”被填充的”文本。
strokeText()在画布上绘制文本(无填充)。
measureText()返回包含指定文本宽度的对象。

3.像素控制

转换

方法描述
scale()缩放当前绘图至更大或更小。
rotate()旋转当前绘图。
translate()重新映射画布上的 (0,0) 位置。
transform()替换绘图的当前转换矩阵。(会叠加)
setTransform()将当前转换重置为单位矩阵。然后运行 transform()。(不叠加)

像素操作

属性描述
width返回 ImageData 对象的宽度。
height返回 ImageData 对象的高度。
data返回一个对象,其包含指定的 ImageData 对象的图像数据。
方法描述
createImageData()创建新的、空白的 ImageData 对象。
getImageData()返回 ImageData 对象,该对象为画布上指定的矩形复制像素数据。
putImageData()把图像数据(从指定的 ImageData 对象)放回画布上。

图像绘制

方法描述
drawImage()向画布上绘制图像、画布或视频。

合成

属性描述
globalAlpha设置或返回绘图的当前 alpha 或透明值。
globalCompositeOperation设置或返回新图像如何绘制到已有的图像上。

4.其他

其他

方法描述
save()保存当前环境的状态。
restore()返回之前保存过的路径状态和属性。
createEvent()
getContext()
toDataURL()

本文参考菜鸟教程的H5 canvas教程。

http://www.runoob.com/tags/ref-canvas.html

分类:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注