PolylineTo 折れ線の描画

VBの宣言:

Declare Function Polyline Lib "gdi32" ( _
    ByVal hDC As Long, _
    ByRef Points As POINT, _
    ByVal PointNum As Long) As Long

説明:

hDCで指定したデバイスコンテキストの現在位置を開始点として、Pointsで指定した座標群を直線で結び、描画する。

本関数の実行後、現在位置は最後の直線の終点となる。

引数の意味は以下の通り。
hDC 描画先のデバイスコンテキストのハンドル。
Points 直線で結ぶ点の座標の配列。
PointNum Pointsで指定した配列の要素の数。

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

VBのサンプル:

PolylineToを利用して歯車をピクチャボックスへ描画する。
'宣言の一部
Declare Function MoveToEx Lib "gdi32" ( _
    ByVal hDC As Long, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal pLastPoint As Long) As Long

'歯車の描画
Private Sub Command1_Click()
    Const PI As Single = 3.14159
    Const ShapeNum As Long = 20
    Const R As Long = 100
    
    Dim I As Long
    Dim J As Long
    Dim Points(3) As POINT
    Dim D As Long
    
    D = R * Sin(PI / ShapeNum)
    
    I = (ShapeNum / 2 - 1)
    J = 3
    MoveToEx _
        Picture1.hDC, _
        D * Cos(2 * PI * (13 / 8 - 2 / ShapeNum)) + R * Cos(2 * PI * (5 / 4 - 2 / ShapeNum)) + R, _
        D * Sin(2 * PI * (13 / 8 - 2 / ShapeNum)) + R * Sin(2 * PI * (5 / 4 - 2 / ShapeNum)) + R, _
        0
    For I = 0 To ShapeNum / 2 - 1
        For J = 0 To 3
            Points(J).X = D * Cos(2 * PI * ((2 * J - 1) / 8 + I * 2 / ShapeNum)) + R * Cos(2 * PI * (I * 2 / ShapeNum + 1 / 4)) + R
            Points(J).Y = D * Sin(2 * PI * ((2 * J - 1) / 8 + I * 2 / ShapeNum)) + R * Sin(2 * PI * (I * 2 / ShapeNum + 1 / 4)) + R
        Next

        PolylineTo Picture1.hDC, Points(0), 4
    Next
End Sub

(original text:1999/03/08 更新)

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