我正在尝试以与传统方式略有不同的方式绘制饼图。无论如何,馅饼的 block 都是相等的,但每个 block 的半径不同。因此所有圆弧仍然以一点为中心,但具有不同的半径。
这是它的简化代码。
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 类的工作原理。
所以我的问题是,我可以将这些不同的弧线排列在 Canvas 的中心吗?我可以使用弧偏移来执行此操作吗?
我试过this solution用油漆,但不成功。任何建议都会有帮助!
最佳答案
它并不是真正基于“RectF 类如何工作”,而是基于您如何放置这些矩形。不要将所有这些矩形的左上角对齐在 (0, 0)
处,而是对齐中心。一点基本的数学知识就能让你明白这一点。假设中心点 (centerX, centerY)
和半径 radius
,左侧将为 centerX - radius
,顶部将为 >centerY - radius
右侧为 centerX + radius
,底部为 centerY + radius
。对具有相同中心点和不同半径的每个矩形执行此操作,毫不奇怪,您最终会得到具有相同中心的圆弧。
关于Android:使用具有相同中心的不同弧尺寸的drawArc(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246570/