zoukankan      html  css  js  c++  java
  • html5综合属性图表

    实际代码如下:
    
    
    
    <html>
    
    <head>
    
    <title>html5 人物属性图</title></head>
    
    <body>
    
    <canvas id="my" width="400" height="400"></canvas>
    
    <script language="javascript" type="text/javascript">
    
    var a = new $attr({
    
      name : '路飞',
    
      values : [5,6,7,8,10],
    
      keys : ['力量','防御','命中','闪避','反击'],
    
      size : 10
    
    });
    
    a.draw();
    
    
    
    function $attr(p){
    
      var ctx = document.getElementById('my').getContext('2d'), _p = {
    
        name : '春哥',
    
        values : [10,10,10,10,10,10,10],
    
        keys : ['力量','防御','闪避','反击','必杀','命中','格挡'],
    
        size : 10,
    
        r : 10
    
      }
    
      ctx.clearRect(0,0,400,400);
    
      ctx.translate(200,200);
    
      ctx.save();
    
    
    
      this.draw = function(){
    
        init();
    
        drawCircle();
    
        drawLine();
    
      };
    
    
    
      //等级圆
    
      function drawCircle(){
      
        ctx.beginPath();
    
        ctx.strokeStyle = '#c0c0c0';
    
        for(var i = p.size; i > 0; i--){
    
          ctx.moveTo(p.r * i, 0);
    
          ctx.fillText(i,p.r * i, 0);
      
          ctx.arc(0,0,p.r * i,0,Math.PI*2,true);
    
        }
    
        ctx.stroke();
    
      };
    
      //属性线
    
      function drawLine(){
    
        var l = p.keys.length, rad = Math.PI * 2 / p.keys.length;
    
        ctx.rotate(Math.PI / 2 * 3);
    
        ctx.beginPath();
      
        ctx.font = 'bold 20px 宋体';
    
        for(var i = l; i > 0; i--){
    
          ctx.rotate(rad);
    
          ctx.moveTo(0,0);
    
          ctx.lineTo(p.r * p.size,0);
    
        }
    
        ctx.stroke();
    
        drawRange(l,rad);
    
        drawKeys(l,rad);
    
      };
    
      //画区域
    
      function drawRange(l,rad){
    
        var x1 = p.values[0] * p.r;
    
        ctx.beginPath();
    
        ctx.fillStyle = 'rgba(2,140,253,0.5)';
      
        ctx.strokeStyle = 'black';
    
        ctx.moveTo(x1,0);
    
        for(var i = l - 1; i >= 1; i--){
    
          ctx.rotate(rad);
    
          ctx.lineTo(p.values[i] * p.r,0);
    
        }
    
        ctx.rotate(rad);
    
        ctx.lineTo(x1,0);
    
        ctx.stroke();
    
        ctx.fill();
    
      };
    
      //属性名
    
      function drawKeys(l,rad){
    
        ctx.fillStyle = 'gray';
    
        ctx.font = 'bold 10px 宋体';
    
        ctx.translate(-6,-15);
    
        ctx.beginPath();
    
        for(var i = l; i > 0; i--){
    
          ctx.rotate(rad);
    
          ctx.save();
    
          ctx.translate(p.r * p.size + 15,5);
    
          ctx.rotate(rad * i + Math.PI / 2 - rad);
    
          ctx.fillText(p.keys[i - 1],0,0);
    
          ctx.restore();
    
        }
    
        ctx.stroke();
    
      };
    
      //初始化数据
    
      function init(){
    
        for(var a in _p){
    
          p[a] || (p[a] = _p[a]);
    
        }
    
      };
    
    };
    
    </script>
    
    </body>
    
    </html>
    

      

  • 相关阅读:
    Verilog模块概念和实例化#转载自Jason from Lofter
    P4-verilog实现mips单周期CPU
    P0-Logisim简单部件与有限状态机
    终——提问回顾与个人总结
    技术博客——PyPDF2 & Reportlab 使用
    结对——软工第一次结对项目
    分析——个人第二次博客作业
    交点——软工第一次个人项目作业
    启——软工第一次个人博客作业
    再会,旧时光——软工热身作业
  • 原文地址:https://www.cnblogs.com/ahl5esoft/p/2107524.html
Copyright © 2011-2022 走看看