【问题标题】:Canvas: Dividing Rectange in several sub-rectangles画布:将矩形划分为几个子矩形
【发布时间】:2020-01-16 13:55:09
【问题描述】:
这是一个概念性问题,从这里开始:
我应该创建、编辑、保存和重用一个自定义视图,它应该由一个父矩形和 12 个内部矩形/多边形组成。我应该能够从代码中引用它们中的每一个。
最简单的解决方案是简单地绘制 12 个矩形,一个挨着一个,但它可能太重了。我在想的是画一个巨大的矩形并将其分成几部分(例如 GIS 中的多边形),但我没有找到这样的东西。
如果有人能提出一些轻量级的概念,我会非常高兴。
【问题讨论】:
标签:
android
android-canvas
polygon
【解决方案1】:
一般解决方案怎么样,您可以像这样对矩形进行建模:
data class Coord(val x: Float, val y: Float)
data class Rectangle(val topLeft: Coord, val bottomRight: Coord, val childRectangles: Collection<Rectangle>)
然后,你就有了这样的绘图函数:
fun draw(rectangle: Rectangle, canvas: Canvas, paint: Paint) {
canvas.drawRect(
rectangle.topLeft.x,
rectangle.topLeft.y,
rectangle.bottomRight.x,
rectangle.bottomRight.y,
paint
)
rectangle.childRectangles.forEach { childRectangle ->
draw(childRectangle, canvas, paint)
}
}
【解决方案2】:
回到问题 -> 最后,我通过扩展 RectF 并对其进行了一些修改以获得我需要的东西,分别创建了每个直角。因为它是静态的并且没有性能问题,所以我保留了它。