首頁  >  文章  >  web前端  >  H5動畫--canvas繪製圓環百分比進度的實例

H5動畫--canvas繪製圓環百分比進度的實例

零下一度
零下一度原創
2017-05-27 15:34:093042瀏覽

1.效果圖 

H5動畫--canvas繪製圓環百分比進度的實例
#2.原理
第一步繪製一個整圓顏色自訂,第二部繪製一個內圓,其半徑要小於外圓顏色自定
最後一步依照百分比繪製第三個圓,顏色自定。
要實現動態繪製第三步的效果,只要添加一個定時器的功能,每隔一段時間繪製一段距離,設定一個閥值
當大於這個閥值得時候就清空這個定時器,這個閥值其實就是要顯示的百分比值。每次繪製0.01.
注意:在定時器內繪製時,要把第二步繪製內圓,空白圓也在定時器中繪製。

3.知識點
繪製公式:arc(x, y, radius, startRad, endRad, anticlockwise)
在canvas畫布上繪製以座標點(x, y)為圓心、半徑為radius的圓上的一段弧線。這段弧線的起始弧度是startRad,結束弧度是endRad。這裡的弧度是以x軸正方向(時鐘三點鐘)為基準、進行順時針旋轉的角度來計算的。 anticlockwise表示是以逆時針方向還是順時針方向開始繪製,如果為true則表示逆時針,如果為false則表示順時針。 anticlockwise參數是可選的,預設為false,即順時針。

4.js原始碼

<script src="jquery.min.js"></script><script>function circleProgress(value,average){
    var canvas = document.getElementById("yuan");    var context = canvas.getContext(&#39;2d&#39;);    var _this = $(canvas),
    value= Number(value),// 当前百分比,数值
    average = Number(average),// 平均百分比
    color = "",// 进度条、文字样式
    maxpercent = 100,//最大百分比,可设置
    c_width = _this.width(),// canvas,宽度
    c_height =_this.height();// canvas,高度
    // 判断设置当前显示颜色
    if( value== maxpercent ){
        color="#29c9ad";
    }else if( value> average ){
        color="#27b5ff";
    }else{
        color="#ff6100";
    }    // 清空画布
    context.clearRect(0, 0, c_width, c_height);    // 画初始圆
    context.beginPath();    // 将起始点移到canvas中心
    context.moveTo(c_width/2, c_height/2);    // 绘制一个中心点为(c_width/2, c_height/2),半径为c_height/2,起始点0,终止点为Math.PI * 2的 整圆
    context.arc(c_width/2, c_height/2, c_height/2, 0, Math.PI * 2, false);
    context.closePath();
    context.fillStyle = &#39;#ddd&#39;; //填充颜色
    context.fill();    // 绘制内圆
    context.beginPath();
    context.strokeStyle = color;
    context.lineCap = &#39;square&#39;;
    context.closePath();
    context.fill();
    context.lineWidth = 10.0;//绘制内圆的线宽度

    function draw(cur){
        // 画内部空白  
        context.beginPath();  
        context.moveTo(24, 24);  
        context.arc(c_width/2, c_height/2, c_height/2-10, 0, Math.PI * 2, true);  
        context.closePath();  
        context.fillStyle = &#39;rgba(255,255,255,1)&#39;;  // 填充内部颜色
        context.fill();        // 画内圆
        context.beginPath();        // 绘制一个中心点为(c_width/2, c_height/2),半径为c_height/2-5不与外圆重叠,
        // 起始点-(Math.PI/2),终止点为((Math.PI*2)*cur)-Math.PI/2的 整圆cur为每一次绘制的距离
        context.arc(c_width/2, c_height/2, c_height/2-5, -(Math.PI / 2), ((Math.PI * 2) * cur ) - Math.PI / 2, false);
        context.stroke();        //在中间写字  
        context.font = "bold 18pt Arial";  // 字体大小,样式
        context.fillStyle = color;  // 颜色
        context.textAlign = &#39;center&#39;;  // 位置
        context.textBaseline = &#39;middle&#39;;  
        context.moveTo(c_width/2, c_height/2);  // 文字填充位置
        context.fillText(value+"%", c_width/2, c_height/2-20);
        context.fillText("正确率", c_width/2, c_height/2+20);
    }    // 调用定时器实现动态效果
    var timer=null,n=0;    function loadCanvas(nowT){
        timer = setInterval(function(){
            if(n>nowT){
                clearInterval(timer);
            }else{
                draw(n);
                n += 0.01;
            }
        },15);
    }
    loadCanvas(value/100);
    timer=null;
}; 
</script>

最後需用呼叫circleProgress這個方法,並且把對應的參數穿進去。部落客是這樣寫的,透過點擊按鈕觸發。 。 。

<input onclick="circleProgress(10,50)" value="画圆" type="button"><canvas id="yuan"></canvas>

【相關推薦】

1. HTML5 canvas基本繪圖之繪製曲線

2. 詳解canvas實現圓弧、圓環進度條的實例方法

3. 分享h5 canvas圓圈進度條的實例代碼

4. 小程式開發之利用co處理非同步流程的實例教學

5. H5 canvas實作圓形動態載入進度實例

#

以上是H5動畫--canvas繪製圓環百分比進度的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn