canvas教程

分享canvas画图的一些初级代码和函数

字号+ 作者:H5之家 来源:H5之家 2017-03-13 10:00 我要评论( )

最近培训了html5,其中学习到了canvas的一些基本用法。之后自己又尝试了一些canvas的函数和其他属性。在此和大家分享一下。 Canvas学习结束后,要求话一个五角星,核心代码如下。 scripttype=text/javascript functioncanFun(){ varcanvas=document.querySel

最近培训了html5,其中学习到了canvas的一些基本用法。之后自己又尝试了一些canvas的函数和其他属性。在此和大家分享一下。

Canvas学习结束后,要求话一个五角星,核心代码如下。

 

<script type="text/javascript">

function canFun(){

var canvas=document.querySelector("canvas");  

var context=canvas.getContext("2d"); 

 

<!--五角星路径 S-->  

context.moveTo(76,197);

context.lineTo(421,197);  

context.lineTo(143,399);  

context.lineTo(248,71);  

context.lineTo(356,399);  

context.lineTo(76,197);

<!--五角星路径 E-->

 

context.stroke();

</script>

 

<canvas width="500" height="500" >该浏览器不支持canvas.</canvas>

 

这样当浏览器识别html5时,就会显示一个五角星,如图:

 

当然,如果想画正规的五角星,可以用三角函数,网上有很多例子,这里不再举例。

接下来想和大家一起用一些代码给五角星添加外形。如果在源代码“context.stroke();

”之后添加这部分代码:

context.fillStyle="yellow";

context.fill();

五角星就会变成这种样子:

一个是先描路径在填充,一个是先填充再描边,就会造成不同的样式。

canvas里,还有一个代码属性是context.lineWidth,这个是设置描边粗细的,如果我们把刚才的代码加入这个属性,改成:

context.lineWidth = 8;

context.stroke();

context.fill();

这样,我们的五角星就有粗边了,但是,仔细看,我们会发现起始位置和终止位置没有闭合。

当我们设置描边宽度大于1时,起始位置和终止位置就没有闭合了,这该怎么办呢?我们可以用closePath()函数来解决这个问题,即:

context.lineWidth = 8;

context.closePath();

context.stroke();

context.fill();

添加closePath的形状如图:

 

最后,我们还可以利用中心区域渐变,给五角星添加高光的效果,添加代码如下:

var radGrad=context.createRadialGradient(210,200,2,250,250,1800);

radGrad.addColorStop(0.0,"white");

radGrad.addColorStop(0.05,"yellow");

context.fillStyle=radGrad;

得到的五角星的效果是:

最后完整的代码是:

<!DOCTYPE HTML>  

<html>  

<head>

<meta charset="utf-8">

 

<!--函数 S-->

 

<script type="text/javascript">

function canFun(){

var canvas=document.querySelector("canvas");  

var context=canvas.getContext("2d"); 

 

<!--五角星路径 S-->  

context.moveTo(76,197);

context.lineTo(421,197);  

context.lineTo(143,399);  

context.lineTo(248,71);  

context.lineTo(356,399);  

context.lineTo(76,197);

<!--五角星路径 E-->

 

<!--中心区域渐变 S-->

var radGrad=context.createRadialGradient(200,190,2,250,250,1800);

radGrad.addColorStop(0.0,"white");

radGrad.addColorStop(0.05,"yellow");

context.fillStyle=radGrad;

<!--中心区域渐变 E-->

 

<!--描边和填充 S-->

context.closePath();

context.lineWidth = 8;

context.stroke();

context.fill();

<!--描边和填充 E-->

 

<!--保持位置居于浏览器中心 S-->

canvas.style.top=(document.documentElement.clientHeight-500)/2+"px";

canvas.style.left=(document.documentElement.clientWidth-500)/2+"px";

<!--保持位置居于浏览器中心 E-->

 

}

window.onload=window.onresize=canFun;

</script>

 

<!--函数 E-->

 

</head>

<body>

<canvas width="500" height="500" >该浏览器不支持canvas.</canvas>

</body>  

</html> 

 

 

当然,canvas相关的代码函数还有很多。我只是个初学者,写的非常浅薄。希望和大家共同学习进步。

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • angularJS结合canvas画图例子

    angularJS结合canvas画图例子

    2017-03-13 10:02

  • js修改canvas高度宽度的正确方法

    js修改canvas高度宽度的正确方法

    2017-03-12 17:06

  • android16#--canvas.drawText

    android16#--canvas.drawText

    2017-03-12 12:02

  • 学习 Canvas 从注释开始,在这里你可以:阅读、修改、创作!

    学习 Canvas 从注释开始,在这里你可以:阅读、修改、创作!

    2017-03-12 12:00

网友点评
a