Android区域(android.graphics.Region)总是有矩形区域,还是可以是多边形或圆形(弯曲)?是android区域总是一个矩形区域,或者它可能是多边形或曲线?
其实我必须做一些Region.Op.UNION
和Region.Op.INTERSECTION
操作与多个地区。 我想知道Ultimate Output Region的形状,它是否还有矩形区域?
Android区域(android.graphics.Region)总是有矩形区域,还是可以是多边形或圆形(弯曲)?是android区域总是一个矩形区域,或者它可能是多边形或曲线?
其实我必须做一些Region.Op.UNION
和Region.Op.INTERSECTION
操作与多个地区。 我想知道Ultimate Output Region的形状,它是否还有矩形区域?
它可能很复杂(isComplex()
),即它由多个矩形组成。不知道“弯曲”是什么意思,但它可以是多边形。如果我理解正确,则可以使用getBoundaryPath()
来获取描述所得形状的路径。
在文档中没有什么会导致一个断定的区域可以是任何东西但一个矩形,它被从任一个矩形中,x构造,y坐标加上宽度和高度,或通过另一区域。
可以从路径描述矩形,所以getBoundaryPath()并不一定会得出非矩形是可能的结论。相反,可以隐含一个包含矩形的边界。
isComplex()属性只说它由多个矩形组成。它们是否都由一个外部的界定矩形?如果是这样,我们如何区分它们?在没有足够的文件的情况下,没有实验就说不清:
以下代码描述了一个路径并创建了一个多边形区域。我们从任意数量的坐标对开始。然后:
//describe a path corresponding to the transformed polygon
Path transformPath;
transformPath = new Path();
//starting point
transformPath.moveTo(getTransformedPolygon()[0], getTransformedPolygon()[1]);
//draw a line from one point to the next
for(int i = 2; i < arrayCoordinates.length; i = i + 2)
{
transformPath.lineTo(arrayCoordinates[i], arrayCoordinates[i + 1]);
}
//then end at the starting point to close the polygon
transformPath.lineTo(arrayCoordinates[0], arrayCoordinates[1]);
//describe a region (clip area) corresponding to the game area (my example is a game app)
Region clip = new Region(0, 0, gameSurfaceWidth, gameSurfaceHeight);
//describe a region corresponding to the transformed polygon path
transformRegion = new Region();
transformRegion.setPath(transformPath, clip);
如果将该区域显示为字符串,则会看到构成多边形形状的几对坐标。
我会假设不是由于'公共布尔isRect()'方法有点多余,如果它总是一个矩形。文档中似乎有很多涉及可包含弧线的路径的操作。 – rich200313 2013-02-12 13:34:38