博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
canvas制图
阅读量:7045 次
发布时间:2019-06-28

本文共 3125 字,大约阅读时间需要 10 分钟。

hot3.png

一、创建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="
" }

二、作图

(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);			}

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);			}

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

你可能感兴趣的文章
ERP流程图
查看>>
10.29 A
查看>>
LOVE2D-03-完整的LOVE2D程序
查看>>
使用safe-rm替代rm
查看>>
Codeforces Round #526 (Div. 1)
查看>>
NX签名//NXOpen VB.Net / C# Sign
查看>>
Mac下安装nginx
查看>>
<转>IOS多线程
查看>>
微信服务号、订阅号和企业号的差别(运营和开发两个角度)
查看>>
AOP之AspectJ
查看>>
SHELL里执行HIVE导出文件处理成CSV文件
查看>>
Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
查看>>
【转】生活感悟
查看>>
【leetcode】965. Univalued Binary Tree
查看>>
第十五周学习报告
查看>>
tomcat用户设置
查看>>
LINQ实现行列转换
查看>>
PHP最全笔记(五)(值得收藏,不时翻看一下)
查看>>
拦截器与过滤器的区别
查看>>
移动开发知识点收集
查看>>