Android:使用具有相同中心的不同弧尺寸的drawArc()

标签 android

我正在尝试以与传统方式略有不同的方式绘制饼图。无论如何,馅饼的 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/

相关文章:

android - 在 sqlite/android 中创建两个表并显示它们的内容

javascript - 在 Angular JS 应用程序中加载 Facebook sdk 的推荐方法

android - 如何让按钮的高度与另一个元素的高度相匹配?

android - 在 logcat 中抑制/混淆 URL

android - 在 android 中滚动时使用改造从 API 获取下 10 个项目的分页

android - 当用户访问该位置(接近标记)时,我想从 map 中替换标记

java - 如何在 BottomNavigationView 中的项目上设置长按监听器?

android - Gradle Android 单元测试依赖于 'aar' 构建工具 0.11.+

java - 如何将字符串从 Android 发送到 PHP?我的 PHP 脚本应该如何处理它?

android - 具体的 EditText Android