CreatePolyPolygonRgn 複数の多角形からなるリージョンを作成

Cの宣言:

HRGN CreatePolyPolygonRgn(
	CONST POINT *PointArray,
	CONST INT *CountArray,
	int CountNum,
	int PolyFillMode);

VBの宣言:

Declare Function CreatePolyPolygonRgn Lib "gdi32" ( _
    ByRef PointArray As POINT, _
    ByRef CountArray As Long, _
    ByVal CountNum As Long, _
    ByVal PolyFillMode As Long) As Long

説明:

複数の図形からなるリージョンを作成する。

引数の意味は以下の通り。
PointArray 複数の多角形の各頂点の座標の配列。
CountArray 各多角形の頂点の個数の配列。
CountNum 多角形の数。
PolyFillMode 塗りつぶしモード。指定可能な値についてはCreatePolygonRgnを参照。

戻り値は、作成結果のリージョンのハンドルである。関数の実行に失敗した場合、NULLが返される。

VBのサンプル:

CreatePolyPolygonRgnを使用して、複数の図形からなるリージョンを描画する。
'複数の図形からなるリージョンの描画
Private Sub Command1_Click()

    Const PI As Single = 3.14159

    Dim p(100) As POINT
    Dim c(2) As Long
    Dim hRgn As Long
    Dim I As Long
    Dim M As Long
    Dim N As Long

	'リージョン作成用データ描画
    I = 0
    For N = 5 To 9 Step 2
        For M = 0 To N - 1
            p(I).X = 100 * Cos(2 * PI * M * 2 / N) + 100 + (N - 5) / 2 * 100
            p(I).Y = 100 * Sin(2 * PI * M * 2 / N) + 100
            I = I + 1
        Next
    Next

    c(0) = 5
    c(1) = 7
    c(2) = 9

    'リージョンの作成
    hRgn = CreatePolyPolygonRgn(p(0), c(0), 3, ALTERNATE)
    
    'リージョンの描画
    FillRgn Picture1.hDC, hRgn, GetStockObject(WHITE_BRUSH)

    'リージョンの破棄
    DeleteObject hRgn

End Sub

(original text:2000/02/13 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。