一時的に線を描画する

一時的に直線を描画したいときもあると思います。
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プログラミング関係一覧に戻る


システム開発の【Spread i-Vision】


google検索の結果はこちら