美文网首页
11、canvas动态画圆

11、canvas动态画圆

作者: 波罗的海de夏天 | 来源:发表于2017-06-22 14:49 被阅读0次

    canvas动态画圆,示例:

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>动态画圆</title>
            <style type="text/css">
                body {
                    padding: 100px 100px;
                }
                canvas {
                    background: lightgreen;
                    margin-top: 20px;
                    display: block;
                }
            </style>
        </head>
        <body>
    
            <input type="text" placeholder="请输入百分比">
            <input type="button" value="点击绘制">
            <canvas id="canvas" width=500px height=500px></canvas>
            
    
            <script type="text/javascript">
                // 取元素
                var canvas = document.getElementById('canvas');
                var text = document.getElementsByTagName('input')[0];
                var btn = document.getElementsByTagName('input')[1];
                // 绘制图形
                var radius = 100; // 圆的半径
                var context = canvas.getContext('2d');
                // context.arc() 绘制图形
                // 圆心坐标X Y、radius、start、end、false=顺时针
                function draw(end) {
                    context.beginPath();
                    context.moveTo(canvas.width/2, canvas.height/2);
                    context.arc(canvas.width/2, canvas.height/2, radius, 0, end, false);
                    context.closePath();
                    context.fillStyle = 'red';
                    context.fill();
                }
    
                // draw(2*Math.PI);
    
                // 百分比 -- Math.PI
                function change(value) {
                    var num = value.substring(0, value.length-1);
                    return Math.PI*2*num/100;
                }
    
                // 验证用户输入信息
                function inputErr(value) {
                    var textReg = RegExp(/^(100|[1-9]?\d(\.\d\d?)?)%$/);
                    var result = textReg.test(value);
                    return result;
                }
    
                // 按钮事件
                btn.onclick = function() {
                    if (!inputErr(text.value)) {
                        alert('请输入百分比');
                        return;
                    }
                    // 利用定时器实现动态效果
                    var numberEnd = 0;
                    var timer = setInterval(function() {
                        numberEnd ++;
                        draw(numberEnd/100*2*Math.PI);
                        if (numberEnd >= parseInt(text.value)) {
                            draw(change(text.value));
                            clearInterval(timer);
                        }
                    }, 10)
                }
            </script>
        </body>
        </html>  

    相关文章

      网友评论

          本文标题:11、canvas动态画圆

          本文链接:https://www.haomeiwen.com/subject/nddfcxtx.html