问题
在手写类,识别类,或地图类应用当中
我们可能会遇到画一个不规则的区域,然后求其面积的需求
原理
Android的RegionIterator,提供了将不规则区域,分割为若干规则矩形的功能
只要计算出每个小矩形的面积,累积起来就是整个区域的面积
我们手绘的信息,一般通过Path来记录,而Region可以通过Path来创建
实现代码
fun Path.area() {
close()
val region = Region()
val bound = computeBounds(true)
val clip = Region(bound.toRect())
region.setPath(this, clip)
var area = 0
var tempRect = Rect()
val iterator = RegionIterator(region)
while (iterator.next(tempRect)) {
area += tempRect.width() * tempRect.height()
}
}