PolyPolygon 複数の多角形を描画

VBの宣言:

Declare Function PolyPolygon Lib "gdi32" ( _
    ByVal hDC As Long, _
    ByRef Points As POINT, _
    ByRef Counts As Long, _
    ByVal CountNum As Long) As Long

説明:

複数の塗りつぶされた多角形を描画する。

多角形の境界は選択されているペンによって描画される。多角形の塗りつぶしは選択されているブラシによって行われる。多角形同士が重なる場合、SetPolyFillModeの設定が反映される。

描画される多角形の数はCountNumによって指定される。各多角形に含まれる頂点の数は配列Countsによって指定される。実際の頂点の座標は配列Pointsによって指定される。配列Pointsの最初のCounts[0]個の座標が最初の多角形の頂点の座標である。次のCounts[1]個の座標が二番目の多角形の頂点の座標である。同様に、最後のCounts[CountNum-1]個の座標が最後の多角形の頂点の座標である。

引数の意味は以下の通り。
hDC 描画先のデバイスを識別するデバイスコンテキストのハンドル。
Points 多角形の頂点の座標の配列。
Counts 各多角形に含まれる頂点の座標の数を表す配列。
CountNum 多角形の数。

戻り値は、多角形の塗りつぶしモードである。関数の実行に失敗した場合、0が返される。

VBのサンプル:

PolyPolygonを利用して、三角形、四角形、五角形を描画する。
Private Sub Command1_Click()

    Const PI As Single = 3.14159
    Const PointNumMax As Long = 5
    
    Dim Points(100) As POINT
    Dim Counts(100) As Long
    Dim X As Long
    Dim Y As Long
    Dim Cnt As Long
    Dim PointNum As Long
    
    Dim I As Long
    
    For PointNum = 3 To PointNumMax
        Counts(PointNum - 3) = PointNum
        For I = 0 To PointNum - 1
            Points(Cnt).X = Cos(2 * PI * I / PointNum) * 50 + 50 + 100 * (PointNum - 3)
            Points(Cnt).Y = Sin(2 * PI * I / PointNum) * 50 + 50
            Cnt = Cnt + 1
        Next
    Next
        
    PolyPolygon Picture1.hDC, Points(0), Counts(0), PointNumMax - 2

End Sub

(original text:1999/09/05 更新)

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