2

Android リージョン ( android.graphics.Region ) は常に長方形の領域を持っていますか、それとも多角形または丸みを帯びた (曲線) でしょうか?

実際には、複数のリージョンでいくつかRegion.Op.UNIONの操作を行う必要があります。Region.Op.INTERSECTIONUltimate Output Region の形状を知りたいのですが、まだ長方形の領域がありますか?

4

2 に答える 2

1

複雑 ( isComplex()) の場合もあります。つまり、複数の長方形で構成されています。「曲がりくねった」とはどういう意味かわかりませんが、多角形にすることができます。私がそれを正しく理解していれば、getBoundaryPath()結果の形状を記述するパスを取得するために使用できます。

于 2013-02-12T13:42:34.577 に答える
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);

領域を文字列として表示すると、多角形を構成するいくつかの座標のペアが表示されます。

于 2017-08-29T21:47:11.910 に答える