Canvas:将Rectangle分割成几个子矩形

Canvas: Dividing Rectange in several sub-rectangles

这是一道概念题,从这里开始:
我应该创建、编辑、保存和重新使用一个 CustomView,它应该由一个父 Rectange 和 12 个 inner-Rectanges/Polygons 组成。我应该能够从代码中引用它们中的每一个。

最简单的解决方案是绘制 12 个矩形,一个挨着一个,但它可能太重了。我想的是画一个巨大的矩形并将其分成几部分(例如 GIS 中的多边形),但我没有找到这样的东西。
如果有人能提出一些轻量级的概念,我会非常高兴。

通用解决方案如何,您可以像这样对矩形建模:

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)
    }
}

回到问题 -> 最后,我通过扩展 RectF 并对其进行了一些修改以获得我需要的东西,从而分别创建了每个直立角。因为它是静态的并且没有性能问题,所以我保留了它。