我试图以与传统方式略有不同的方式绘制饼图。馅饼无论如何都有相同的碎片,但每个碎片的半径都不同。因此,所有弧仍然在一个点处居中,但具有不同的半径。
以下是它的简化代码。
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,但没有成功。任何建议都会有所帮助!
答案 0 :(得分:3)
它并不是真正基于“RectF类如何工作”,而是基于如何放置这些矩形。不是在(0, 0)
对齐所有这些矩形的左上角,而是对齐中心。一点点基础数学就能得到你。假设中心点(centerX, centerY)
和半径radius
,左侧为centerX - radius
,顶部为centerY - radius
,右侧为centerX + radius
,底部为centerY + radius
将是{{1}}。对具有相同中心点和不同半径的每个矩形执行此操作,并且毫不奇怪,您将最终得到具有相同中心的弧。