您现在的位置:首页 >> 前端 >> 内容

html5之canvas基础1

时间:2015/7/28 10:39:07 点击:

  核心提示:1、canvas画布常用属性:width、height,使用canvas时首先需要获取画布:var can = document.getElementById(canvas);var ctx = ca...

1、canvas画布常用属性:width、height,使用canvas时首先需要获取画布:

 

var can = document.getElementById(canvas);
var ctx = can.getContext('2d');
在画布上每一笔都会有一个开始、结束,否则画出来的效果会连在一起

 

 

ctx.beginPath();
。。。
ctx.closePath();

2、画笔的两种画法:

 

1)stroke:非填充画法;

2)fill:填充画法;

 

ctx.beginPath();
ctx.fillStyle=black;
ctx.lineWidth=2;
ctx.arc(250,250,5,0,360*Math.PI/180,true);
ctx.fill();
ctx.closePath();

ctx.beginPath();
ctx.strokeStyle=black;
ctx.lineWidth=8;
ctx.moveTo(0,-150);
ctx.lineTo(0,10);
ctx.stroke();
ctx.closePath();

3、常见图形:

 

1)直线:ctx.moveTo(x,y);ctx.lineTo(x,y);

2)圆: arc(X,Y,Radius,startAngle,endAngle,anticlockwise),意思是(圆心X坐标,圆心Y坐标,半径,开始角度(弧度),结束角度弧度,是否按照顺时针画);

3)矩形:

fillRect(X,Y,Width,Height);
strokeRect(X,Y,Width,Height);

 

4、坐标:

1)translate(x,y):把坐标系原点设置为x,y.以后的坐标都是相对于这个标准的。

2)rotate(90 * Math.PI / 180) 按顺时针旋转90度。

3)save():用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。

4)restore():用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。

5)clearRect(x,y,width,height);清除区域;

 

实例:小时钟

 





<script type=text/javascript>
		var ctx = null;
		function aa() {
			var now = new Date();
			var s=now.getSeconds(),m=now.getMinutes(),h=now.getHours();
			h = h+ m/60;
			h=h>=12?h-12:h;
			
			ctx.clearRect(0,0,500,500);    ///初始化画布
			//画表盘
			ctx.beginPath();
			ctx.strokeStyle =blue;
			ctx.lineWidth=10;
			ctx.arc(250,250,200,0,360*Math.PI/180,true);
			ctx.stroke();
			ctx.closePath();
			
			//画刻度
			for (var i=0;i<60;i++) {
				if (i%5 ==0 ) {
					ctx.save();
					ctx.translate(250,250);
					ctx.rotate(i*6*Math.PI/180);
					ctx.beginPath();
					ctx.strokeStyle=black;
					ctx.lineWidth=8;
					//alert(i*30);
					ctx.moveTo(0,-190);
					ctx.lineTo(0,-170);
					ctx.stroke();
					ctx.closePath();
					ctx.restore();
				} else {
					ctx.save();
					ctx.translate(250,250);
					ctx.rotate(i*6*Math.PI/180);
					ctx.beginPath();
					ctx.strokeStyle=black;
					ctx.lineWidth=4;
					//alert(i*30);
					ctx.moveTo(0,-190);
					ctx.lineTo(0,-180);
					ctx.stroke();
					ctx.closePath();
					ctx.restore();
				}
				
			}
			
			//时针
			ctx.save();
			ctx.translate(250,250);
			ctx.rotate(h*30*Math.PI/180);
			ctx.beginPath();
			ctx.strokeStyle=black;
			ctx.lineWidth=8;
			//alert(i*30);
			ctx.moveTo(0,-150);
			ctx.lineTo(0,10);
			ctx.stroke();
			ctx.closePath();
			ctx.restore();
			
			//分针
			ctx.save();
			ctx.translate(250,250);
			ctx.rotate(m*6*Math.PI/180);
			ctx.beginPath();
			ctx.strokeStyle=#abcdef;
			ctx.lineWidth=5;
			//alert(i*30);
			ctx.moveTo(0,-160);
			ctx.lineTo(0,15);
			ctx.stroke();
			ctx.closePath();
			ctx.restore();
			
			//秒针
			ctx.save();
			ctx.translate(250,250);
			ctx.rotate(s*6*Math.PI/180);
			ctx.beginPath();
			ctx.strokeStyle=red;
			ctx.lineWidth=2;
			ctx.moveTo(0,-170);
			ctx.lineTo(0,20);
			ctx.stroke();
			ctx.closePath();
			ctx.restore();
			
			//中心点
			ctx.save();
			ctx.beginPath();
			ctx.fillStyle=black;
			ctx.arc(250,250,5,0,360*Math.PI/180,true);
			ctx.fill();
			ctx.closePath();
			ctx.restore();

		}
		window.onload = function() {
			var can = document.getElementById(canvas);
			ctx = can.getContext('2d');
			
			
			//aa();

		}
		
		setInterval(aa,1000);
	</script>
html5之canvas基础1

 

 

Tags:HT TM ML L5 
作者:网络 来源:蓝精灵——默默争上游