canvasapi及实现简易祖玛

一,canvas简介

1,我们说canvas,是一个html5的一种元素,通过使用javascript,可用于绘制图形,动画,图表,照片构图,或在飞行的任何其他可视化对象。

2,支持的浏览器,

Internet Explorer (9.0+)

Safari (3.0+)

Firefox (3.0+)

Chrome (3.0+)

Opera (10.0+)

iOS (1.0+)

Android (1.0+)

3,开始使用

不支持canvas浏览器

如果这里不定义widht和height默认是宽300,高150

 

 

var oC = document.getElementById('c1');
	
var oGC = oC.getContext('2d');  //webgl : 3D绘图

 

, 

 

//oGC.fillRect(50,50,100,100);//填充
	
oGC.strokeRect(50,50,100,100);//带边框的方块(这里会感觉到边框有两像素)换成下面的

(造成的原因:我们的画图跟在ps里面画图是一样的,我们从坐标为50,50处开始画图边框为1像素的方块,他从边框的1像素的中心处开始画,然后分成0.5。。计算机会自动给我填充成1像素。。所以看上去边框有两像素)
oGC.strokeRect(50.5,50.5,100,100);

 

 

        var oC = document.getElementById('c1');
	
	var oGC = oC.getContext('2d');  
	
	oGC.fillStyle = 'red';
	
	oGC.strokeStyle = 'blue';
	oGC.lineWidth = 10;
	
	oGC.fillRect(50,50,100,100);
	
	oGC.strokeRect(50.5,50.5,100,100);

 这里有个顺序问题。

 

边界绘制

oGC.lineJoin = 'bevel';

 

 

        oGC.beginPath();//开始
	
	oGC.moveTo(100,100);//移动
	
	oGC.lineTo(200,200);//线
	
	oGC.lineTo(300,200);//另一个线
	
	oGC.closePath();//闭合
	
	oGC.stroke();

 

 

	oGC.beginPath();
	
	oGC.rect(100,100,100,100);//矩形
	
	oGC.closePath();
	
	oGC.fill();
	
	oGC.clearRect(0,0,oC.width,oC.height);//删除一个画布的矩形区域的  

 

 

oGC.save();//保存路径
	
	oGC.fillStyle = 'red';
	
	oGC.beginPath();
	
	oGC.moveTo(100,100);
	
	oGC.lineTo(200,200);
	
	oGC.lineTo(300,200);
	
	oGC.closePath();
	
	oGC.fill();
	
	oGC.restore();//恢复路径

 

鼠标画线

 

方块运动

使用定时器来清除画布再次画

 

 ,

画圆,弧度

window.onload = function(){
	var oC = document.getElementById('c1');
	var oGC = oC.getContext('2d');
	
	oGC.moveTo(200,200);
	
	//弧度 = 角度*Math.PI/180
	
	oGC.arc(200,200,150,0,90*Math.PI/180,true);
	
	oGC.stroke();
	
};

 

可以来画个时钟

 

绘制其他曲线

arcTo(x1,y1,x2,y2,r)

第一组坐标,第二组坐标,半径

quadraticCurveTo(dx,dy,x1,y1);

贝塞尔曲线,第一组控制点,第二组结束坐标

bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1);

贝塞尔曲线,第一组控制点,第二组控制点,第三组结束坐标

 

变换

translate

偏移,从起点为基准点,移动当前坐标位置

rotate

旋转,参数为弧度

scale

缩放

 

移动加缩放的方块

 

这里未完待续,,,,,,,,,,,

 

 

 

二,使用canvas完成简易祖玛游戏直接上代码可以运行




	html5canvasZM



 

你可能感兴趣的:(web前端技术,JavaScript)