PolyPolyline 複数の折れ線の描画

VBの宣言:

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

説明:

CountNumで指定した個数分、折れ線を描画する。

各折れ線に含まれる点の数は、Countsで指定した配列にそれぞれ格納する。

各折れ線に含まれる各点の座標は、Pointsで指定した配列にそれぞれ格納する。Pointsで指定した配列中の最初のCounts[0]個の座標は一番目の折れ線の座標群を表し、次のCounts[1]個の座標は二番目の折れ線の座標群を表す。以下同様で、最終的にPointsに含まれる配列の要素の数は、Counts[0]+Counts[1]+...+Counts[CountNum-1]となる。

引数の意味は以下の通り。
hDC 描画先のデバイスコンテキストのハンドル。
Points 折れ線の座標を格納する配列。
Counts 各折れ線に含まれる点の数を指定する配列。
CountNum 描画する折れ線の数。

戻り値は、関数の実行に成功したか否かを表す真偽値である。

VBのサンプル:

PolyPolylineを利用して、一度に三角形、四角形、五角形の三つの図形をピクチャボックスに描画する。
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 + 1
        For I = 0 To PointNum
            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
        
    PolyPolyline Picture1.hDC, Points(0), Counts(0), PointNumMax - 2
End Sub

(original text:1999/02/23 更新)

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