• 用canvas属性写一个五角星哦


    canvas属性中的线条属性学完后,就可以自己写一个简单好看的五角星啦

    先是最简单的画布属性的获取

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>canvas</title>
    <style>
    </style>
    </head>
    <body>
    <canvas id="canvas" width="800" height="800" style="border:solid 1px gray;">
         您的浏览器不支持canvas,建议使用最新版的Chrome
    </canvas>
    <script type="text/javascript">
      var canvas=document.getElementById('canvas');
      var ctx=canvas.getContext('2d');
    </script>
    </body>
    </html>

    对于不支持<canvas></canvas>属性的浏览器,上面那段文字就会跳出提示信息。而支持则会忽视上诉文字。

    接着就是js部分的编写了

    window.onload=function(){
                  drawStar(ctx,200,100,400,400,30);
    }
                  
    function drawStar(cxt,r,R,x,y,rot){
                  cxt.lineWidth=10;
                  cxt.lineJoin="round";
                  cxt.beginPath();
                  for(var i=0; i<=5; i++){
                  cxt.lineTo(Math.cos((18+i*72-rot)/180*Math.PI)*R+x,-Math.sin((18+i*72-rot)/180*Math.PI)*R+y);
                  
                  cxt.lineTo(Math.cos((54+i*72-rot)/180*Math.PI)*r+x,-Math.sin((54+i*72-rot)/180*Math.PI)*r+y);
                  }
                  cxt.closePath();
                  cxt.stroke();
    }

     上诉代码中,我们写了一个drawStar()的函数,传进了6个参数,分别为:cxt(绘图环境),r(代表小圆半径),R(大圆半径),x(在x轴上的移动量),y(在y轴上的移动量),rot(整个五角星的偏移量)。

            cxt.lineWidth:这个属性是线条的宽度。

            cxt.lineJoin:这个属性是线条交接处的处理方式。有“bevel”,"round","mitter"三个属性,分别什么样子呢,自己试试吧。其中mitter还有mitterLimit这个属性。canvas给这个属性一个适合值为10,所以如果要用cxt.mitterLimit=10;就这样写啦!

            路径开始beginPath(),路径结束closePath();(PS: closePath() 多写有好处,不写也还好,但有时候会有小问题)。

            接下来这个for循环就是五角星的绘制。那绘制五角星其实是基于一个同心圆上的,就像这样

    lineTo()里面两个参数分别为坐标(x,y),其中需要计算x,y对应的表达式,对于数学都很帮帮的你们来说,小case啦!

    最后用两个lineTo()绘制线段,连接起来,用Stroke()画出图形,再调用drawStar()函数就好了。参数不同,五角星也不一样哦!!

  • 相关阅读:
    display
    盒子模型
    css样式
    修改页面标题前的图标
    form表单
    html中列表
    代码书写格式
    dw中的超链接
    硬盘的访问,程序重定位和加载
    Bochs调试指令
  • 原文地址:https://www.cnblogs.com/shuixiaohao/p/6618055.html
Copyright © 2020-2023  润新知