Android:使用具有不同弧大小的drawArc(),并且具有相同的中心

时间:2013-01-09 21:11:44

标签: android

我试图以与传统方式略有不同的方式绘制饼图。馅饼无论如何都有相同的碎片,但每个碎片的半径都不同。因此,所有弧仍然在一个点处居中,但具有不同的半径。

以下是它的简化代码。

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,但没有成功。任何建议都会有所帮助!

1 个答案:

答案 0 :(得分:3)

它并不是真正基于“RectF类如何工作”,而是基于如何放置这些矩形。不是在(0, 0)对齐所有这些矩形的左上角,而是对齐中心。一点点基础数学就能得到你。假设中心点(centerX, centerY)和半径radius,左侧为centerX - radius,顶部为centerY - radius,右侧为centerX + radius,底部为centerY + radius将是{{1}}。对具有相同中心点和不同半径的每个矩形执行此操作,并且毫不奇怪,您将最终得到具有相同中心的弧。