2013-02-12 36 views
2

Android区域(android.graphics.Region)总是有矩形区域,还是可以是多边形或圆形(弯曲)?是android区域总是一个矩形区域,或者它可能是多边形或曲线?

其实我必须做一些Region.Op.UNIONRegion.Op.INTERSECTION操作与多个地区。 我想知道Ultimate Output Region的形状,它是否还有矩形区域?

+2

我会假设不是由于'公共布尔isRect()'方法有点多余,如果它总是一个矩形。文档中似乎有很多涉及可包含弧线的路径的操作。 – rich200313 2013-02-12 13:34:38

回答

1

它可能很复杂(isComplex()),即它由多个矩形组成。不知道“弯曲”是什么意思,但它可以是多边形。如果我理解正确,则可以使用getBoundaryPath()来获取描述所得形状的路径。

1

在文档中没有什么会导致一个断定的区域可以是任何东西一个矩形,它被从任一个矩形中,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); 

如果将该区域显示为字符串,则会看到构成多边形形状的几对坐标。

相关问题