• canvas波浪扇形


    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>自定义波浪扇形(runoob.com)</title>
    </head>
    <body style="background-color:#000">
    
    <h1></h1>
    <p></p>
    <canvas id="can1" ></canvas>
        <script type="text/javascript">
                var can1 = document.getElementById("can1");
                var ctx = can1.getContext("2d");
    
                
                var px = 135;  //  中心位置x
                var py = 110;  // 中心位置y
                var r1 = 40;  //  三个圆的半径
                var r2 = 30;   // 三个圆的半径
                var r3 = 5;   // 三个圆的半径
                
                var wavelevel = 60;  //波浪幅度
                
                var percent = 30; // 1-100
                
                var fontSize = 20;  // 字体大小
                var fontSizeWidth = 14; // 字体宽度
                var fontSizeHeigth = 20; // 字体高度
    
                ctx.save();
            
                
                
                ctx.beginPath();
            
                
                
                ctx.arc(px,py,r1,0,2*Math.PI);
                ctx.strokeStyle="rgba(0, 240, 255, 1)"
                ctx.lineWidth=2;
                ctx.stroke();
                
                ctx.restore();    
                ctx.save();
                
                
                
                
            
                ctx.shadowOffsetX = 0; // 阴影Y轴偏移
                ctx.shadowOffsetY = 0; // 阴影X轴偏移
                ctx.shadowBlur = 10; // 模糊尺寸
                ctx.shadowColor = 'rgba(0, 240, 255, 1)'; // 颜色    
                
                var angle = 45;    //假设角度为60度
                 
                var radian = angle * Math.PI / 180;
    
                var py3 = py - Math.sin(radian)*r1;
                var px3 = px - Math.cos(radian)*r1;
                console.log(px3,py3)
                ctx.beginPath();
                ctx.arc(px3,py3,r3,0,2*Math.PI);
                ctx.fillStyle="rgba(0, 240, 255, 1)";
                ctx.closePath();
                ctx.fill();            
                ctx.restore();    
                ctx.save();    
                
                
                
                
                
                
                ctx.beginPath();
                ctx.arc(px,py,r2,0,2*Math.PI);
                ctx.strokeStyle="rgba(0, 240, 255, 1)"
                ctx.lineWidth=2;
                ctx.clip();
                
                
                ctx.stroke();    
    
                ctx.beginPath();
                ctx.arc(px,py,r2,0,2*Math.PI);
                ctx.fillStyle="rgba(0, 240, 255, 0.2)"
    
                
                
                ctx.fill();
                
    
                
                 ctx.beginPath();
                 
                 let pw_x = px;
                 let pw_y = py + (0.5 - (percent/100) )*2*r2;
                 ctx.strokeStyle = "rgba(0, 240, 255, 1)";
                 ctx.moveTo(pw_x - (r2), pw_y);
                 ctx.bezierCurveTo( pw_x - (r2/2), pw_y - ((r2/2)*Math.tan(wavelevel * Math.PI / 180)), pw_x + (r2/2), pw_y + ((r2/2)*Math.tan(wavelevel * Math.PI / 180)), pw_x + (r2),pw_y);
                 ctx.fillStyle="rgba(0, 240, 255, 1)";
                 
                 ctx.stroke();
                 ctx.lineTo(px + (r2), py + (r2));
                 ctx.lineTo(px - (r2), py + (r2));
                 ctx.closePath();
                 ctx.fill();
                 
                 
                ctx.restore();    
                ctx.save();    
                ctx.fillStyle = "#ffffff";
                ctx.font= fontSize + "px Arial";
                let valueStr =  percent + "%";
                ctx.fillText(valueStr, px - valueStr.length*fontSizeWidth/2 , py + (fontSizeHeigth/2));        
                
                
    
                
    </script>
    </body>
    </html>


    实际效果
    
    
  • 相关阅读:
    爬虫工程师分享:三步就搞定 Android 逆向
    爬虫工程师常用的 Chrome 插件
    Python 描述符(Descriptor) 附实例
    爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py
    京东白条
    中国金融贷款整理
    接口文档管理工具YApi内网服务器搭建过程
    AWS申请图文及连接教程
    金融
    centos jdk 1.7升级到1.8后显示还是1.7
  • 原文地址:https://www.cnblogs.com/hzsu/p/15045419.html
Copyright © 2020-2023  润新知