HTML5 Canvas 基础 一

一、Canvas 是什么

在网页上创建Canvas元素时,他会创建一块矩形区域。默认情况下该区域300px*150px, 使用Canvas编程,首先要获取其上下文(context)。接着在上下文中知心动作,最后将这些动作应用到上下文。可以将Canvas的这种编程方式想象成数据库事物:开发人员发起一个事务然后执行某些操作,最后提交事务。

Canvas的坐标是从左上角开始,X轴沿水平方向,Y轴沿垂直向下延伸,左上角坐标为X=0,Y=0 的点称作原点。

二、浏览器对Canvas支持性


浏览器支持性
chrome1.0+
Firefox1.5+
IE9.0
Opera9.0+
safari1.3+






IE是落后于其他浏览器,如果需要在旧版本IE中使用Canvas,可以选用explorerCanvas的开源项目,http://code.google.com/p/explorercanvas/ ,使用explorerCanvas时,需要判断当前浏览器是否为IE,如果是则在页面中嵌入:

<!--[if IE]><script src="excanvas.js"></script><![endif] -->

三、检测浏览器支持情况

try{
    document.createElement('canvas').getContext('2d');
    //页面中事先放置ID为support的元素用于显示消息
    document.getElementById('support').innerHTML='HTML5 Canvas is supported in your browser';
}catch(e){
    document.getElementById('support').innerHTML='HTML5 Canvas is not supported in your browser';
}

上面代码试图创建一个Canvas,并且获取其上下文,如果发生错误这可以捕捉错误,进而得知该浏览器不支持Canvas。

三、在页面中加入Canvas

1、在canvas中绘制一条对角线

function drawDiagonal(){
	var canvas = document.getElementById('diagonal');
	var context = canvas.getContext('2d');
	//用绝对坐标来创建一条路径
	context.beginPath();
	context.moveTo(70,140);
	context.lineTo(140,70);	
	//绘制
	context.stroke();
	
}
window.addEventListener('load', drawDiagonal,true);

在代码中调用了三个方法,beginPath、moveTo、lineTo ,这个过程很像拿起笔、移动到指定坐标、画线到指定坐标,但是方法moveTo、lineTo实际上并没有真正画出一条线,而是在结束canvas操作的时候使用context.stroke()方法完成绘制。重复上文那句话: 可以将Canvas的这种编程方式想象成数据库事物:开发人员发起一个事务然后执行某些操作,最后提交事务。

四、使用变换

canvas上绘制图像的另一种方式--使用变换,这个过程一般是从原点开始,应用变换(缩放、平移、旋转等),然后不断修改代码直至达到希望的效果。。。

//使用变换绘制对角线
function drawDiagonal2(){
	var canvas = document.getElementById('diagonal2');
	var context = canvas.getContext('2d');
	//保存当前状态
	context.save();
	
	//向右下方移动绘图上下文
	context.translate(70,140);
	//从原点开始绘制
	context.beginPath();
	context.moveTo(0,0);
	context.lineTo(70,-70);	
	context.stroke();
	
	//还原状态
	context.restore();
}
window.addEventListener('load', drawDiagonal2,true);

五、路径

现在进一步学习稍微复杂点的图形:路径

//使用路径
//将绘制方法单独写
function createCanopyPath(context){
	//开始
	context.beginPath();
	context.moveTo(-35,-50);
	context.lineTo(-15,-80);
	context.lineTo(-25,-80);
	context.lineTo(-5,-110);
	context.lineTo(-15,-110);
	
	context.lineTo(0,-140);
	context.lineTo(15,-110);
	context.lineTo(5,-110);
	context.lineTo(25,-80);
	context.lineTo(15,-80);
	context.lineTo(35,-50);
	
	//闭合路径--将起点和终点连接
	context.closePath();	
}
function drawTrails(){
	var canvas = document.getElementById('trails');
	var context = canvas.getContext('2d');
	
	context.save();
	context.translate(130,150);
	createCanopyPath(context);
	
	context.stroke();
	context.restore();
}
window.addEventListener('load', drawTrails,true);

代码很简单,先调用beginPath 告诉canvas要开始绘图了,之后反复使用lineTo绘制图形,下一个特殊的路径函数叫做closePath,这个函数和lineTo很像,唯一差别在于它会将路径的起点和终点闭合,再使用stroke绘制。

以上demo:http://1.ddemo.sinaapp.com/drawDiagonal.html


ok,明天继续---创建一个带有长跑道的树林。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值