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 并对其进行了一些修改以获得我需要的东西,从而分别创建了每个直立角。因为它是静态的并且没有性能问题,所以我保留了它。
这是一道概念题,从这里开始:
我应该创建、编辑、保存和重新使用一个 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 并对其进行了一些修改以获得我需要的东西,从而分别创建了每个直立角。因为它是静态的并且没有性能问题,所以我保留了它。