2

我试图以与传统方式略有不同的方式绘制饼图。无论如何,馅饼都有相同的块,但是每个块的半径是不同的。所以所有的弧仍然以一个点为中心,但具有不同的半径。

这是它的简化代码。

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 类的工作方式。

所以我的问题是,我可以在画布的中心排列这些不同的弧吗?在某处我可以使用弧偏移来执行此操作吗?

我用油漆尝试了这个解决方案,但没有成功。任何的意见都将会有帮助!

4

1 回答 1

4

它并不是真正基于“RectF 类的工作方式”,而是基于您放置这些矩形的方式。不是将所有这些矩形的左上角对齐,而是(0, 0)对齐中心。一点基本的数学知识会让你明白这一点。假设一个中心点(centerX, centerY)和一个半径radius,左边是centerX - radius,顶部是centerY - radius右边centerX + radius,底部是centerY + radius。对每个具有相同中心点和不同半径的矩形执行此操作,不出所料,您最终会得到具有相同中心的弧。

于 2013-01-09T21:37:06.260 回答