1

我希望能够知道一个区域所覆盖的总面积(例如,该区域的双重积分)。我找不到任何方法,我想知道我是否必须逐像素进行。提前致谢!

4

2 回答 2

2

您应该能够使用 aRegionIterator并将返回的矩形的面积相加。

推理:Andriod 文档暗示当对区域执行布尔操作时,结果区域是一组具有所需联合的新的非重叠矩形。换句话说,A - B如果 A 和 B 是矩形,则结果可能会产生 0、1、2、3 或 4 个矩形。

我还没有测试过,但Android xRef 站点上的源代码显示经过验证的区域由没有重叠的矩形组成。

于 2012-08-19T18:02:37.373 回答
1

看来,我和你的问题一样的问题。

我不确定它是否是“真正的”解决方案。但我发布我的代码。这些值看起来不错。

private void calculateArea(Region region) {

        RegionIterator regionIterator = new RegionIterator(region);

        int size = 0; // amount of Rects
        float area = 0; // units of area

        Rect tmpRect= new Rect(); 

        while (regionIterator.next(tmpRect)) {
            size++;
            area += tmpRect.width() * tmpRect.height();
        }

        log.d("Rect amount=" + size);
        log.d("Area Size / units of area=" + area);
    }

}

我的问题是:我想获得一些绘制路径的区域大小。为了识别路径上的触摸,我也添加了一个区域。

于 2013-06-26T17:30:47.140 回答