生活随笔
收集整理的這篇文章主要介紹了
小程序实现圆饼图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
效果圖
預備知識
CanvasContext.createCircularGradient(number x, number y, number r) 創建一個圓形的漸變顏色。起點在圓心,終點在圓環。返回的CanvasGradient對象需要使用 CanvasGradient.addColorStop() 來指定漸變點,至少要兩個。(詳細介紹 Canvas的基本繪制API
實現代碼
注意:arc()函數中表示角的單位是弧度,不是角度。角度與弧度的js表達式: 弧度=(Math.PI/180)*角度。
function drawPie
( canvas, anglesArray, circular, percent
) { //畫出餅狀圖var ctx
= canvas
; //顏色列表const color
= [ { start:
'rgb(76, 197, 255)' , end:
'rgb(81, 122, 255)' } ,
{ start:
'rgb(38, 236, 161)' , end:
'rgb(12, 182, 224)' } ,
{ start:
'rgb(255, 115, 137)' , end:
'rgb(230, 75, 161)' } ] for ( let i
= 0
; i
< anglesArray.length
; i++
) { let startAngle
; let endAngle
; if ( i
== 0
) { startAngle
= transformAngle
( 0
) ; endAngle
= transformAngle
( anglesArray
[ i
] - 1
) ; } else { let start
= 0
; for ( let j
= 0
; j
< i
; j++
) { start +
= anglesArray
[ j
] ; } startAngle
= transformAngle
( start
) ; endAngle
= transformAngle
( start + anglesArray
[ i
] - 1
) ; } ctx.beginPath
( ) ; ctx.arc
( circular.x, circular.y, circular.radius, startAngle, endAngle
) ; ctx.lineTo
( circular.x, circular.y
) ; ctx.closePath
( ) ; //填充漸變色
let gra
= ctx.createCircularGradient
( circular.x, circular.y, circular.radius
) ; gra.addColorStop
( 0, color
[ i
] .start
) gra.addColorStop
( 1, color
[ i
] .end
) ; ctx.setFillStyle
( gra
) ctx.fill
( ) ; } //繪制中間的空白圓ctx.beginPath
( ) ; ctx.arc
( circular.x, circular.y, circular.radius * percent, 0, 360
) ; ctx.fillStyle
= "white" ; ctx.fill
( ) ; ctx.draw
( ) ;
}
function transformAngle
( angle
) { //計算弧度
return ( Math.PI / 180
) * angle
}
總結
以上是生活随笔 為你收集整理的小程序实现圆饼图 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。