整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

html5 canvas 绘图

html5 canvas 绘图

TML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。

画布是一个矩形区域,您可以控制其每一像素。

canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

下面是一个用 HTML5 的 canvas 绘制的 3D 玫瑰花。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>3D玫瑰花</title>

<meta name="Generator" content="EditPlus">

<meta name="Author" content="">

<meta name="Keywords" content="">

<meta name="Description" content="">

</head>

<body>

<div id="demo" style="width:520; height:500px;"><canvas id="c" height="500" width="500"></canvas></div>

<script>

var b=document.body;

var c=document.getElementsByTagName('canvas')[0];

var a=c.getContext('2d');

var canvas=document.getElementsByTagName('canvas')[0];

var ctx=canvas.getContext('2d');

document.body.clientWidth;

with(m=Math)C=cos,S=sin,P=pow,R=random;

c.width=c.height=f=500;h=-250;

function p(a,b,c){

if(c>60)

return[S(a*7)*(13+5/(.2+P(b*4,4)))-S(b)*50,b*f+50,625+C(a*7)*(13+5/(.2+P(b*4,4)))+b*400,a*1-b/2,a];

A=a*2-1;

B=b*2-1;

if(A*A+B*B<1){

if(c>37){

n=(j=c&1)?6:4;o=.5/(a+.01)+C(b*125)*3-a*300;

w=b*h;

return[o*C(n)+w*S(n)+j*610-390,o*S(n)-w*C(n)+550-j*350,1180+C(B+A)*99-j*300,.4-a*.1+P(1-B*B,-h*6)*.15-a*b*.4+C(a+b)/5+P(C((o*(a+1)+(B>0?w:-w))/25),30)*.1*(1-B*B),o/1e3+.7-o*w*3e-6]

}

if(c>32){

c=c*1.16-.15;o=a*45-20;w=b*b*h;z=o*S(c)+w*C(c)+620;

return[o*C(c)-w*S(c),28+C(B*.5)*99-b*b*b*60-z/2-h,z,(b*b*.3+P((1-(A*A)),7)*.15+.3)*b,b*.7]

}

o=A*(2-b)*(80-c*2);

w=99-C(A)*120-C(b)*(-h-c*4.9)+C(P(1-b,7))*50+c*2;z=o*S(c)+w*C(c)+700;

return[o*C(c)-w*S(c),B*99-C(P(b, 7))*50-c/3-z/1.35+450,z,(1-b/1.2)*.9+a*.1, P((1-b),20)/4+.05]

}

}

var draw=setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}',0);

var demo=document.getElementById('demo');

function redraw(){

/*

var d_c=document.createElement("canvas");

d_c.setAttribute("id","c");

d_c.setAttribute("width","520");

d_c.setAttribute("height","500");

demo.appendChild(d_c);

*/

draw=setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}',0);

//alert(d_c);

}

function clear_canvas()

{

ctx.clearRect(0,0,520,500);

//canvas.parentNode.removeChild(canvas); //删除

}

function stop_draw(obj){

clearInterval(obj);

}

</script>

</body>

</html>

TML4几乎没有绘图的功能,通常只能显示已有的图片;而HTML5则集成了强大的绘图功能。在HTML5中可以通过下面的方法进行绘图:

  • ?使用Canvas API动态地绘制各种效果精美的图形;
  • ?绘制可伸缩矢量图形(SVG)。

借助HTML5的绘图功能,既可以美化网页界面,也可以实现专业人士的绘图需求。本书将在第5章介绍使用Canvas API画图的方法,游戏开发中主要使用Canvas API画图来实现游戏界面。

【例】要使用Canvas API画图实现绘制坦克图案。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8"/>

</head>

<body>

<h1>html5-坦克大战</h1>

<!--坦克大战的战场-->

<canvas id="tankMap" width="400px"height="300px"style="background-color:black"></canvas>

<script type="text/javascript">

//得到画布

varcanvas1=document.getElementById("tankMap");

//定义一个位置变量

var heroX=80; var heroY=80;

//得到绘图上下文

var cxt=canvas1.getContext("2d");

//设置颜色

cxt.fillStyle="#BA9658";

//左边的矩形

cxt.fillRect(heroX,heroY,5,30);

//右边的矩形

cxt.fillRect(heroX+17,heroY,5,30);

//画中间的矩形

cxt.fillRect(heroX+6,heroY+5,10,20);

//画出坦克的盖子

cxt.fillStyle="#FEF26E";

cxt.arc(heroX+11,heroY+15,5,0,360,true);

cxt.fill();

//画出炮筒

cxt.strokeStyle="#FEF26E";

cxt.lineWidth=1.5;

cxt.beginPath();

cxt.moveTo(heroX+11,heroY+15);

cxt.lineTo(heroX+11,heroY);

cxt.closePath();

cxt.stroke();

</script>

</body>

</html>

浏览网页效果如图1-5所示。

如果想要学习视频,交流讨论,请按照下图所示输入私信“申请加入”获取加群链接~~~

天将和大家分享HTML5中canvas元素的使用,有一定参考价值,希望对大家有所帮助。

【推荐课程:HTML5教程】

canvas元素

主要使用 JavaScript 在网页上绘制图像画布是一个矩形区域,可以控制其每一像素而且canvas 拥有多种绘制路径、矩形、圆形、以及添加图像的方法,接下来将在文章中为大家详细介绍

html代码

<canvas id="demo"></canvas>

矩形

fillStyle:用来给图形添加色彩的

fillRect(x,y,width,height)

x:距离左上角的x值

y:距离左上角的y值

width,height:就是图形的宽高

<script type="text/javascript">

var demo=document.getElementById("demo");

var fang=demo.getContext("2d");

fang.fillStyle="pink";

fang.fillRect(0,0,200,50);

</script>

线条

moveTo:线条开始位置

lineTo:结束位置

lineWidth:线条宽度

strokeStyle:颜色

stroke:开始绘制

var demo=document.getElementById("demo");

var xian=demo.getContext("2d");

xian.moveTo(10,10);

xian.lineTo(100,100);

xian.lineWidth=2;

xian.strokeStyle="pink";

xian.stroke();

圆形

beginPath():开始路径

arc(x,y,r,sAngle,eAngle,counterclockwise)

x,y:为圆的中心点坐标

r:圆的半径

sAngle,eAngle:圆的起始角和结束角

counterclockwise:可写可不写规定应该逆时针还是顺时针绘图。False=顺时针,true=逆时针。

var demo=document.getElementById("demo");

var yuan=demo.getContext("2d");

yuan.beginPath();

yuan.arc(100,100,50,0,2*Math.PI);

yuan.strokeStyle="pink";

yuan.stroke();

图形插入

drawImage(img,sx,sy,swidth,sheight,x,y,width,height)

sx,sy:剪切的 x,y 坐标位置

swidth,sheight:被剪切图像的宽度和高度

x,y:在画布上放置图像的 x,y 坐标位置

width,height:要使用的图像的宽度和高度

var demo=document.getElementById("demo");

var img1=document.getElementById("img1");

var img=demo.getContext("2d");

img1.onload=function(){

img.drawImage(img1,10,10,100,120)

总结:以上就是本篇文章的全部内容了,希望通过本篇文章对大家有所帮助。

以上就是HTML5中canvas元素如何绘制图形的详细内容,更多请关注其它相关文章!

更多技巧请《转发 + 关注》哦!