canvas制图

一、创建canvas画布

1.使用canvas标签创建:<canvas id="mycanvas" width="200px" height="200px"></canvas>

2.使用js代码创建:

		    var CANVAS_WIDTH=200,CANVAS_HEIGHT=200;
			window.onload=function(){
				createCanvas();
			}
			function createCanvas(){
				document.body.innerHTML="<canvas id=\"mycanvas\" width=\""+CANVAS_WIDTH+"\" height=\""+CANVAS_HEIGHT+"\"></canvas>"
			}

二、作图

(1)块级元素,都是成块显示的。

			window.onload=function(){
				var mycanvas=document.getElementById("mycanvas");
				var context=mycanvas.getContext("2d");
				context.fillStyle="antiquewhite";
				//context.rotate(45);//旋转多少度
			//	context.scale(2,0.5);//缩放比例 他是在下面的这个基础上面进行缩放
				//context.translate(200,200);//移动范围,图形会从下面的fillRect右移下移200
				context.fillRect(0,0,100,100);
			}
</script>

<canvas id="mycanvas" width="200px" height="200px" style="background-color: cornflowerblue;"></canvas>

153132_nGMt_3038594.png

(2)画线。stroke()方法

			window.onload=function(){
			var mycanvas=document.getElementById("mycanvas");
			var context=mycanvas.getContext("2d");
			context.fillStyle="#4D4D4D";
			context.moveTo(0,0);
			context.lineTo(200,280);
			context.stroke();
			}

143648_0KUt_3038594.png

(3)圆形,,画圆使用stroke()或者fill()方法,前者是画线,后者是天填充型的

        window.onload=function(){
            var c=document.getElementById("mycanvas");
            var context=c.getContext("2d");
            context.beginPath();
            context.arc(40,40,40,0,2*Math.PI);
            context.fill();
            //context.stroke();
            }

143939_8DeA_3038594.png144001_m3aR_3038594.png

(4)文字   文本方法调用:fillText(text,x,y),在canvas上绘制实心文本。strokeText(text,x,y);空心文本。此处的差异同上。

			window.onload=function(){
				var c=document.getElementById("mycanvas");
				var context=c.getContext("2d");
				context.font="30px 微软雅黑";
				context.fillStyle="white"
				context.strokeText("hello",50,50);
				//context.fillText("hello",50,50)
			}

(5)渐变。线性渐变,圆形渐变,每个画布上不止一个渐变色。addcolorstop前面的数字表示位置所在地。如下:0.5在正中的时候为正绿色。

window.onload=function(){
			var c=document.getElementById("mycanvas");
			var ctx=c.getContext("2d");
			// Create gradien渐变的范围,下面的参数就是颜色在X方向渐变在Y的方向是一个度
			var grd=ctx.createLinearGradient(0,0,200,0);
			grd.addColorStop(0,"red");
			grd.addColorStop(0.5,"green");
			grd.addColorStop(1,"white");
			ctx.fillStyle=grd;
			ctx.fillRect(10,10,150,80);
			}

151710_0L63_3038594.png

(6)图片

			window.onload=function(){
			var c=document.getElementById("mycanvas");
			var context=c.getContext("2d");
			var img=document.getElementById("img");
			context.drawImage(img,10,10);
			}
<script>
<body>
	<img id="img" src="img/img2.jpeg" style="display: none;"/>
	<canvas id="mycanvas" width="300px" height="280px" style="background-color:azure;"></canvas>
</body>

152352_WzvC_3038594.png

(7)重叠显示光圈

	window.onload=function(){
				var canvas = document.getElementById("mycanvas");
				if(canvas==null){
					return false;
				}
				var context = canvas.getContext("2d");
				for(var i=0;i<=10;i++){
					context.beginPath();
					context.arc(i*25,i*25,i*10,0,Math.PI*2,true);
					//context.closePath();
					context.fillStyle="rgba(255,0,0,0.25)";
					context.fill();
				}
			}

175055_GOKS_3038594.png

(8)重叠显示图案

			window.onload=function(){
				var canvas = document.getElementById("mycanvas");
				if(canvas==null){
					return false;
				}
				var context = canvas.getContext("2d");
				context.fillStyle="rgba(255,0,60,0.5)";
				context.translate(200,200);
				context.fillRect(10,10,80,30);
				for(var i=0;i<50;i++){
					context.translate(20,20);
					context.scale(0.95,0.95);
					context.rotate(Math.PI/20);
				//	context.fill();
					context.fillRect(0,0,100,50);
				}
			}

172128_5Jgc_3038594.png

总而言之,canvas用处很广,更多的在于创造力。股票行情图那种也是canvas。

方法API参照与:https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API
            

 

转载于:https://my.oschina.net/u/3038594/blog/815667

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值