首先我们先来理解一下什么是HTML Canvas?
我们可以在HTML中利用属性width和height来定义Canvas。但是实现Canvas的干系功能紧张还依赖于Javascript实现,即HTML5 Canvas API。我们利用javascript来访问和掌握Canvas干系的区域,比如调用干系绘图的方法,用来动态的天生须要的动画或者图形。
接下来我们来看看canvas的特性:
互动性:Canvas支持互动,可以很好的响运用户的操作,我们可以通过Javascript来监键盘,鼠标,及其触摸设备干系事宜。
动 画:任何被canvas绘制的图形都可以添加动画,大略的弹跳球或者繁芜的HTML5游戏都可以实现
灵巧性:开拓职员可以利用Canvas来绘制任何的内容,比如,直线,图形,笔墨,图片等,可以包含动画或者不包含。同时你可以添加音频或者视频浏览器支持:险些所有的当代浏览器都支持,并且被广泛的各种设备支持,例如,桌面,平板,智好手机等等。
盛行度:canvas目前很盛行,很多的开拓职员都利用它来开拓类似游戏或者绘图类运用
web标准:只须要有浏览器就可以运行,而非flash或者silverlight,须要安装干系的插件
开拓一次,任何浏览器都可以运行(当然,不包括老式浏览器)
可以利用免费拥有大量的开拓工具及其类库。
利用HTML5 Canvas我们能开拓那些干系产品或者运用呢?
1 可视化数据: 各种统计图表,比如:百度的echart
2 场景秀:用Canvas实现动态的广告效果能够非常融洽的跨平台运行。如:手机中微产品.在移动端兼容性很好。
3 游戏:canvas在基于Web的图像显示方面比Flash更加立体、更加风雅,canvas成为HTML5小游戏开拓首选。现阶段h5做游戏,业务办法不是很明确. 25 超棒的 HTML5 Canvas 游戏。
4 其他可嵌入网站的内容 (多用于活动页面、殊效):类似图表、音频、视频,还有许多元素能够更好地与Web领悟,并且不须要任何插件。
5 趋势=> 仿照器: 无论从视觉效果还是核心功能方面来说,仿照器产品可以完备由JavaScript来实现。仿照真实硬件环境,如移动端各种类型手机.
6 趋势=> 远程打算机掌握: Canvas可以让开发者更好地实现基于Web的数据传输,构建一个完美的可视化掌握界面。
7 趋势=> 图形编辑器: Photoshop图形编辑器将能够100%基于Web实现。
如何利用HTML5 Canvas?
利用HTML5 canvas实在非常大略, 每一个canvas都拥有一个高下文(context)。利用它你可以来调用干系的画布方法。
<canvas id=\"大众mycanvas\公众 width=\"大众500\"大众 height =\"大众400\公众>
<p>您的浏览器不支持HTML5 Canvas</p>
</canvas>
以上代码我们在HTML中添加了一个canvas标签,如果浏览器不支持canvas,会显示<p>标签的内容,当然,如果你须要支持老式浏览器你也可以利用flash或者其它方法来做一个替代的办理方案。
var canvas = document.getElementById('mycanvas'),
context = canvas.getContext(‘2d’);
以上代码我们通过canvas取到2D的context。
在HTML5 Canvas的2D构造中,坐标(0,0)在左上方,这和传统的坐标不太一样。大家须要把稳一下,如下图所示:
下面来说一下canvas的API:
canvas的紧张属性和方法:
save():保存当前环境的状态
restore():返回之前保存过的路径状态和属性
createEvent()
getContext():返回一个工具,指出访问绘图功能必要的API
toDateURL():返回canvas图像的URL
颜色、样式和阴影属性和方法:
fillStyle:设置或返回用于添补绘画的颜色、渐变或模式
strokeStyle:设置或返回用于笔触的颜色、渐变或模式
shadowColor:设置或返回用于阴影的颜色
shadowBlur:设置或返回用于阴影的模糊级别
shadowOffsetX:设置或返回阴影距形状的水平间隔
shadowOffsetY:设置或返回阴影距形状的垂直间隔
createLinearGradient():创建线性渐变(用在画布内容上)
createPattern():在指定的方向上重复指定的元素
createRadialGradient():创建放射状/环形的渐变(用在画布内容上)
addColorStop():规定渐变工具中的颜色和停滞位置
线条样式属性和方法
lineCap:设置或返回线条的结束端点样式
lineJoin:设置或返回两条线相交时,所创建的拐角类型
lineWidth:设置或返回当前的线段宽度
miterLimit:设置或返回最大斜接长度
Canvas的API-路径方法
fill():添补任前绘图(路径)
stroke():绘制已定义的路径
beginPath():起始一条路径,或重置当前路径
moveTo():把路径移动到画布中的指定点,不创建线条
closePath():创建从当前点回到起始点的路径
lineTo():添加一个新点,创建从该点到末了指定点的线条
clip():从原始画布剪切任意形状和尺寸的区域
quadraticCurveTo():创建二次贝塞尔曲线
bezierCurveTo():创建三次贝塞尔曲线
arc():创建弧/曲线(用于创建圆形或部分圆)
arcTo():创建两切线之间的弧/曲线
isPointInPath():如果指定的点位于当前路径中,返回布尔值
Canvas的API-转换方法
scale():缩放当前绘图至更大或更小
rotate():旋转当前绘图
translate():重新映射画布上的(0,0)位置
transform():更换绘图确当前转换矩阵
setTransform():将当前转换重置为单位矩阵,然后运行transform()
Canvas的API-文本属性和方法
font:设置或返回文本内容确当前字体属性
textAlign:设置或返回文本内容确当前对齐办法
textBaseline:设置或返回在绘制文本时利用的确当前文本基线
fillText():在画布上绘制“被添补的”文本
strokeText():在画布上绘制文本(无添补)
measureText():返回包含指定文本宽度的工具
Canvas的API-图像绘制方法
drawImage():向画布上绘制图像、画布或视频
Canvas的API-像素操作方法和属性
width:返回ImageData工具的宽度
height:返回ImageData工具的高度
data:返回一个工具,其包含指定的ImageData工具的图像数据
createImageData():创建新的、空缺的I马哥Data工具
getImageData():返回ImageData工具,该工具为画布上指定的矩形复制像素数据
putImageData():把图像数据(从指定的ImageData工具)放回画布上
Canvas的API-图像合成属性
globalAlpha:设置或返回绘图确当前alpha或透明值
globalCompositeOperation:设置或返回新图像如何绘制到已有的图像上
快速高效的创建HTML5画布图形?直策应用Canvas来绘制图形相对来说比较乏味并且麻烦,以是在当代的HTML5 Canvas中我们利用一些现成的第三方类库帮助我们多快好省的实现图形绘制的功能:
KineticJS
Paper.js
EaselJS
Fabric.js
oCanvas
Echart.js