Canvas_progress bar_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 09:04:381179ブラウズ


写真のように、プログレスバーは反時計回りに描かれていますが、それを時計回りに作成する方法
以下は私のコードです
​​

<!DOCTYPE html><html><head><title> canvas 实例 </title><meta charset='utf-8'></head><body><canvas id="myCanvas" width="600" height="150">您的浏览器不支持canvas!</canvas><br/><button onclick="Start();">Start</button><button onclick="Create();">Create</button><script type="text/javascript">        //x,y 坐标,radius 半径,process 百分比,backColor 中心颜色, proColor 进度颜色, fontColor 中心文字颜色        function DrowProcess(x,y,radius,process,backColor,proColor,fontColor){            var canvas = document.getElementById('myCanvas');            if (canvas.getContext) {                var cts = canvas.getContext('2d');            }else{                return;            }            cts.beginPath();            // 坐标移动到圆心            cts.moveTo(x, y);            // 画圆,圆心是24,24,半径24,从角度0开始,画到2PI结束,最后一个参数是方向顺时针还是逆时针            cts.arc(x, y, radius,  Math.PI * 2,0, true);            cts.closePath();            // 填充颜色            cts.fillStyle = backColor;            cts.fill();            cts.beginPath();            // 画扇形的时候这步很重要,画笔不在圆心画出来的不是扇形            cts.moveTo(x, y);            // 跟上面的圆唯一的区别在这里,不画满圆,画个扇形            cts.arc(x, y, radius, Math.PI * 1.5, Math.PI * 1.5 -  Math.PI * 2 * process / 100,true);            cts.closePath();            cts.fillStyle = proColor;            cts.fill();            //填充背景白色            cts.beginPath();            cts.moveTo(x, y);            cts.arc(x, y, radius - (radius * 0.06), 0, Math.PI * 2, true);            cts.closePath();            cts.fillStyle = 'rgba(255,255,255,1)';            cts.fill();            // 画一条线//            cts.beginPath();//            cts.arc(x, y, radius-(radius*0.30), 0, Math.PI * 2, true);//            cts.closePath();//            // 与画实心圆的区别,fill是填充,stroke是画线//            cts.strokeStyle = backColor;//            cts.stroke();            //在中间写字            cts.font = " 20pt Arial";            cts.fillStyle = fontColor;            cts.textAlign = 'center';            cts.textBaseline = 'middle';            cts.moveTo(x, y);            cts.fillText(process+"%", x, y);        }        bfb = 0;        time=0;        function Start(){            DrowProcess(60,60,55,bfb,'#ddd','#EAA0C6','#A6A3A6');//	DrowProcess(180,60,55,bfb,'#ddd','#e74c3c','#e74c3c');//	DrowProcess(300,60,55,bfb,'#ddd','#FF7F50','#FF7F50');            t = setTimeout(Start,25);            if(bfb>=100){                clearTimeout(t);                bfb=0;                           return;            }            bfb+=1;        }        function Create(){            DrowProcess(420,60,55,25,'#ddd','#32CD32','#32CD32');        }        Start();    </script></body></html>


ディスカッションへの返信(解決策)

りー
コードに書いてない? FALSEに変えてみて

rreee
コードに書いてない? FALSEに変えてみて



これがfalse
の効果です

反時計回りですが、コードを変更する方法がまだわかりません

cts.arc(x, y, radius, Math.PI * 1.5, Math.PI * 1.5 - Math.PI * 2 * process / 100,true);

   // 画圆,圆心是24,24,半径24,从角度0开始,画到2PI结束,最后一个参数是方向顺时针还是逆时针            cts.arc(x, y, radius,  Math.PI * 2,0, true);

false に変更するだけです はい いいえ、効果は間違っています
このようにする必要があります

   // 画圆,圆心是24,24,半径24,从角度0开始,画到2PI结束,最后一个参数是方向顺时针还是逆时针            cts.arc(x, y, radius,  Math.PI * 2,0, true);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。