直線を描画するには

直線を描画してみます。
キーワードは「LineTo()関数」です。
LineTo()関数は現在のペンの位置(カレントポジション)から終点の位置に直線を描画します。
現在のペンの位置はMoveToEx()関数で変更することができます。

実行時の様子

Private Type POINTAPI
    X As Long                        'X座標
    Y As Long                        'Y座標
End Type
'現在の位置から指定の位置まで直線を描画する
Private Declare Function LineTo Lib "gdi32.dll" (ByVal hdc As Long, _
    ByVal nXEnd As Long, ByVal nYEnd As Long) As Long
'現在の位置を変更する
Private Declare Function MoveToEx Lib "gdi32.dll" _
    (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpCoord As Long) As Long
'カーソルの現在のスクリーン座標の取得
Private Declare Function GetCursorPos Lib "user32.dll" _
    (lpPoint As POINTAPI) As Long
'点座標をスクリーン座標からクライアント座標に変換する
Private Declare Function ScreenToClient Lib "user32.dll" _
    (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
Dim Flag As Boolean

Private Sub Form_Load() Me.Picture1.ScaleMode = 3 'ピクセルモード Flag = False 'フラグ End Sub
Private Sub Picture1_Click() Dim lpPoint As POINTAPI 'マウスポインタの位置取得 Call GetCursorPos(lpPoint) Call ScreenToClient(Me.Picture1.hWnd, lpPoint) If Flag = False Then '初めてクリックされたとき Flag = True Call MoveToEx(Me.Picture1.hdc, lpPoint.X, lpPoint.Y, 0) Else '2回目以降のとき Call LineTo(Me.Picture1.hdc, lpPoint.X, lpPoint.Y) End If End Sub
ダウンロード