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>
    

      

  • 相关阅读:
    autocomplete自动完成搜索提示仿google提示效果
    实现子元素相对于父元素左右居中
    javascript 事件知识集锦
    让 IE9 以下的浏览器支持 Media Queries
    「2013124」Cadence ic5141 installation on CentOS 5.5 x86_64 (limited to personal use)
    「2013420」SciPy, Numerical Python, matplotlib, Enthought Canopy Express
    「2013324」ClipSync, Youdao Note, GNote
    「2013124」XDMCP Configuration for Remote Access to Linux Desktop
    「2013115」Pomodoro, Convert Multiple CD ISO to One DVD ISO HowTo.
    「2013123」CentOS 5.5 x86_64 Installation and Configuration (for Univ. Labs)
  • 原文地址:https://www.cnblogs.com/ahl5esoft/p/2107524.html
Copyright © 2011-2022 走看看