2013-01-09 75 views
2

我試圖以與傳統方式稍有不同的方式繪製餅圖。無論如何,派都有相同的部分,但每個部分的半徑都不相同。所以所有的弧線仍然集中在一個點上,但是具有不同的半徑。Android:使用不同圓弧大小的drawArc()與所有相同的圓心

下面是它的簡化代碼。

rect1 = new RectF(0,0,8,8) 
rect2 = new RectF(0,0,6,6) 
rect3 = new RectF(0,0,4,4) 
rect4 = new RectF(0,0,2,2) 

canvas.drawArc(rect1,0,90,true, paint) 
canvas.drawArc(rect2,90,90,true, paint) 
canvas.drawArc(rect3,180,90,true, paint) 
canvas.drawArc(rect4,270,90,true, paint) 

這將創建所有正確的弧線,但所有的弧的點在同一地點不集中。我知道這是因爲RectF類的工作原理。

所以我的問題是,我可以在畫布中心排列這些不同的弧線嗎?有什麼地方可以用圓弧偏移來做到這一點?

我用油漆試過this solution,但不成功。任何的意見都將會有幫助!

回答

3

這不是真正基於「RectF類如何工作」,而是基於如何放置這些矩形。對齊中心,而不是將所有這些矩形的左上角對齊到(0, 0)。一點基本的數學能夠幫助你。假設中心點爲(centerX, centerY)且半徑爲radius,則左側將爲centerX - radius,上方將爲centerY - radius右側將爲centerX + radius,底部將爲centerY + radius。對於每個具有相同中心點和不同半徑的矩形,毫不意外的是,最終會得到具有相同中心的弧線。