JavaScript图形实例:五角星
<h3>1.五角星</h3><p> 在半径为80的圆周上取5个点,用这5个点依次首尾连接画5条线,可以绘制出一个五角星图案。</p>
<p> 编写如下的HTML代码。</p>
<p style="margin-left: 30px"><!DOCTYPE html></p>
<p style="margin-left: 30px"><head></p>
<p style="margin-left: 30px"><title>五角星(一)</title></p>
<p style="margin-left: 30px"><script type="text/javascript"></p>
<p style="margin-left: 30px"> function draw(id)</p>
<p style="margin-left: 30px"> {</p>
<p style="margin-left: 30px"> var canvas=document.getElementById(id);</p>
<p style="margin-left: 30px"> if (canvas==null)</p>
<p style="margin-left: 30px"> return false;</p>
<p style="margin-left: 30px"> var context=canvas.getContext('2d');</p>
<p style="margin-left: 30px"> context.fillStyle="#EEEEDD";</p>
<p style="margin-left: 30px"> context.fillRect(0,0,400,300);</p>
<p style="margin-left: 30px"> context.translate(100,150); </p>
<p style="margin-left: 30px"> context.strokeStyle = 'red'; </p>
<p style="margin-left: 30px"> draw5Star(context); </p>
<p style="margin-left: 30px"> context.stroke(); </p>
<p style="margin-left: 30px"> context.translate(200,0); </p>
<p style="margin-left: 30px"> context.fillStyle = 'red'; </p>
<p style="margin-left: 30px"> draw5Star(context); </p>
<p style="margin-left: 30px"> context.fill(); </p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"> function draw5Star(context)</p>
<p style="margin-left: 30px"> { </p>
<p style="margin-left: 30px"> var dx = 0; </p>
<p style="margin-left: 30px"> var dy = 0; </p>
<p style="margin-left: 30px"> var radius = 80; </p>
<p style="margin-left: 30px"> context.beginPath(); </p>
<p style="margin-left: 30px"> var x = radius*Math.sin(Math.PI / 5)+dx; </p>
<p style="margin-left: 30px"> var y = radius*Math.cos(Math.PI / 5)+dy;</p>
<p style="margin-left: 30px"> context.moveTo(x,y); </p>
<p style="margin-left: 30px"> var dig = Math.PI / 5 * 4; </p>
<p style="margin-left: 30px"> for(var i = 1; i < 5; i++)</p>
<p style="margin-left: 30px"> { </p>
<p style="margin-left: 30px"> var x = radius*Math.sin(i * dig+Math.PI / 5); </p>
<p style="margin-left: 30px"> var y = radius*Math.cos(i * dig+Math.PI / 5); </p>
<p style="margin-left: 30px"> context.lineTo(dx+x,dy+y); </p>
<p style="margin-left: 30px"> } </p>
<p style="margin-left: 30px"> context.closePath(); </p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"></script></p>
<p style="margin-left: 30px"></head></p>
<p style="margin-left: 30px"><body onload="draw('myCanvas');"></p>
<p style="margin-left: 30px"><canvas id="myCanvas" width="400" height="300">您的浏览器不支持canvas!</p>
<p style="margin-left: 30px"></canvas></p>
<p style="margin-left: 30px"></body></p>
<p style="margin-left: 30px"></html></p>
<p> 将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在浏览器窗口中绘制出五角星图案1,如图1所示。</p>
<p align="center"><img src="https://img2018.cnblogs.com/common/1485495/201912/1485495-20191221074459577-1203376143.png"> </p>
<p align="center">图1 五角星图案1</p>
<p> 也可以通过绘制10条线的方式来完成五角星的绘制。编写的HTML文件的内容如下。</p>
<p style="margin-left: 30px"><!DOCTYPE html></p>
<p style="margin-left: 30px"><head></p>
<p style="margin-left: 30px"><title>五角星(二)</title></p>
<p style="margin-left: 30px"><script type="text/javascript"></p>
<p style="margin-left: 30px"> function draw(id)</p>
<p style="margin-left: 30px"> {</p>
<p style="margin-left: 30px"> var canvas=document.getElementById(id);</p>
<p style="margin-left: 30px"> if (canvas==null)</p>
<p style="margin-left: 30px"> return false;</p>
<p style="margin-left: 30px"> var context=canvas.getContext('2d');</p>
<p style="margin-left: 30px"> context.fillStyle="#EEEEDD";</p>
<p style="margin-left: 30px"> context.fillRect(0,0,400,300);</p>
<p style="margin-left: 30px"> context.translate(100,150); </p>
<p style="margin-left: 30px"> context.strokeStyle = 'red'; </p>
<p style="margin-left: 30px"> draw5Star(context); </p>
<p style="margin-left: 30px"> context.stroke(); </p>
<p style="margin-left: 30px"> context.translate(150,150); </p>
<p style="margin-left: 30px"> context.fillStyle = 'red'; </p>
<p style="margin-left: 30px"> draw5Star(context); </p>
<p style="margin-left: 30px"> context.fill(); </p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"> function draw5Star(context)</p>
<p style="margin-left: 30px"> { </p>
<p style="margin-left: 30px"> var r = 80; </p>
<p style="margin-left: 30px"> context.beginPath()</p>
<p style="margin-left: 30px"> context.moveTo(r,0);</p>
<p style="margin-left: 30px"> for (var i=0;i<9;i++)</p>
<p style="margin-left: 30px"> {</p>
<p style="margin-left: 30px"> context.rotate(Math.PI/5);</p>
<p style="margin-left: 30px"> if(i%2 == 0)</p>
<p style="margin-left: 30px"> context.lineTo((r/2),0);</p>
<p style="margin-left: 30px"> else</p>
<p style="margin-left: 30px"> context.lineTo(r,0); </p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"> context.closePath();</p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"></script></p>
<p style="margin-left: 30px"></head></p>
<p style="margin-left: 30px"><body onload="draw('myCanvas');"></p>
<p style="margin-left: 30px"><canvas id="myCanvas" width="400" height="300">您的浏览器不支持canvas!</p>
<p style="margin-left: 30px"></canvas></p>
<p style="margin-left: 30px"></body></p>
<p style="margin-left: 30px"></html></p>
<p> 将上述HTML代码保存到一个html文本文件中,再在浏览器中打开包含这段HTML代码的html文件,可以看到在浏览器窗口中绘制出五角星图案2,如图2所示。</p>
<p align="center"> <img src="https://img2018.cnblogs.com/common/1485495/201912/1485495-20191221074544042-1219581852.png"></p>
<p align="center">图2 五角星图案2 </p>
<h3>2.螺旋五角星</h3>
<p> 将前面的五角星经过适当缩放和旋转处理,可以绘制出螺旋五角星图案。编写的HTML代码如下。</p>
<p style="margin-left: 30px"><!DOCTYPE html></p>
<p style="margin-left: 30px"><head></p>
<p style="margin-left: 30px"><title>螺旋五角星</title></p>
<p style="margin-left: 30px"><script type="text/javascript"></p>
<p style="margin-left: 30px"> function draw(id)</p>
<p style="margin-left: 30px"> {</p>
<p style="margin-left: 30px"> var canvas=document.getElementById(id);</p>
<p style="margin-left: 30px"> if (canvas==null)</p>
<p style="margin-left: 30px"> return false;</p>
<p style="margin-left: 30px"> var context=canvas.getContext('2d');</p>
<p style="margin-left: 30px"> context.fillStyle="#EEEEDD";</p>
<p style="margin-left: 30px"> context.fillRect(0,0,350,300);</p>
<p style="margin-left: 30px"> context.translate(180,30); </p>
<p style="margin-left: 30px"> context.fillStyle = 'rgba(255,0,255,0.25)'; </p>
<p style="margin-left: 30px"> for(var i = 0;i < 50;i++)</p>
<p style="margin-left: 30px"> { </p>
<p style="margin-left: 30px"> context.translate(25,25); </p>
<p style="margin-left: 30px"> context.scale(0.95,0.95); </p>
<p style="margin-left: 30px"> context.rotate(Math.PI / 10); </p>
<p style="margin-left: 30px"> draw5Star(context); </p>
<p style="margin-left: 30px"> context.fill(); </p>
<p style="margin-left: 30px"> } </p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"> function draw5Star(context)</p>
<p style="margin-left: 30px"> { </p>
<p style="margin-left: 30px"> var dx = 100; </p>
<p style="margin-left: 30px"> var dy = 0; </p>
<p style="margin-left: 30px"> var radius = 50; </p>
<p style="margin-left: 30px"> context.beginPath(); </p>
<p style="margin-left: 30px"> var x = radius*Math.sin(Math.PI / 5)+dx; </p>
<p style="margin-left: 30px"> var y = radius*Math.cos(Math.PI / 5)+dy;</p>
<p style="margin-left: 30px"> context.moveTo(x,y); </p>
<p style="margin-left: 30px"> var dig = Math.PI / 5 * 4; </p>
<p style="margin-left: 30px"> for(var i = 1; i < 5; i++)</p>
<p style="margin-left: 30px"> { </p>
<p style="margin-left: 30px"> var x = radius*Math.sin(i * dig+Math.PI / 5); </p>
<p style="margin-left: 30px"> var y = radius*Math.cos(i * dig+Math.PI / 5); </p>
<p style="margin-left: 30px"> context.lineTo(dx+x,dy+y); </p>
<p style="margin-left: 30px"> } </p>
<p style="margin-left: 30px"> context.closePath(); </p>
<p style="margin-left: 30px"> }</p>
<p style="margin-left: 30px"></script></p>
<p style="margin-left: 30px"></head></p>
<p style="margin-left: 30px"><body onload="draw('myCanvas');"></p>
<p style="margin-left: 30px"><canvas id="myCanvas" width="350" height="300">您的浏览器不支持canvas!</p>
<p style="margin-left: 30px"></canvas></p>
<p style="margin-left: 30px"></body></p>
<p style="margin-left: 30px"></html></p>
<p> 在浏览器中打开包含这段HTML代码的html文件,可以看到在浏览器窗口中绘制出螺旋五角星图案,如图3所示。</p>
<p align="center"><img src="https://img2018.cnblogs.com/common/1485495/201912/1485495-20191221074618439-86037809.png"> </p>
<p align="center">图3 螺旋五角星</p><br><br>
来源:https://www.cnblogs.com/cs-whut/p/12075774.html
頁:
[1]