一時的に直線を描画したいときもあると思います。
ReversibleLineなどもありますが、今回は
Paintイベントを使用したタイプで作成してみました。
マウスクリック→ムーブ→クリックで、直線を描画します。
(事前準備はこちら)
Public Class Form1
Private ClickCount As Integer
Private stX As Integer, stY As Single
Private enX As Integer, enY As Single
Private linePen As Pen = New Pen(Color.Green, 3)
Private Sub PictureBox_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseClick
If ClickCount = 0 Then
ClickCount = 1
stX = e.X : stY = e.Y
enX = e.X : enY = e.Y
Else
ClickCount = 0
stX = 0 : stY = 0
enX = 0 : enY = 0
End If
PictureBox1.Invalidate()
End Sub
Private Sub PictureBox_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseMove
If ClickCount = 1 Then
enX = e.X : enY = e.Y
PictureBox1.Invalidate()
End If
End Sub
Private Sub Picture_Box(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint
If ClickCount = 1 Then
e.Graphics.DrawLine(linePen, stX, stY, enX, enY)
End If
End Sub
End Class
一時的な直線を描画する際には、Paintイベントが便利だと思います。
これを発展させると、次々と直線を描画することができます。
関連記事
・線分を描画する(再描画あり)
・ラバーバンド (Paintイベント処理)(ver2)
システム開発のためのVB.NETプログラミング関係一覧に戻る