ラバーバンド (Paintイベント処理)(ver2)

事前準備は前回と同じです。(こちら)
今回は、描画した四角形を毎回消去します。
前回と同じように、クリック2回で四角形を描画します。

 Public Class Form1
 Private ClickCount As Integer
 Private rect(0) As Rectangle
 Private StX As Integer
 Private StY As Integer
 Private linePen As Pen = New Pen(Color.Green, 1)


 Private Sub PictureBox_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseClick
  If ClickCount = 0 Then
   ClickCount = 1
   ReDim rect(1)
   StX = e.X : StY = e.Y
  Else
   ClickCount = 0
   ReDim rect(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
   Dim x As Integer = Math.Min(StX, e.X)
   Dim y As Integer = Math.Min(StY, e.Y)
   Dim wid As Integer = Math.Abs(StX – e.X)
   Dim hei As Integer = Math.Abs(StY – e.Y)
   rect(1) = New Rectangle(x, y, wid, hei)
   PictureBox1.Invalidate()
  End If
 End Sub


 Private Sub Picture_Box(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint
  For i As Integer = 1 To UBound(rect)
   e.Graphics.DrawRectangle(linePen, rect(i))
  Next
 End Sub

End Class


今回は、四角形を毎回消します。
矩形範囲を指定するときに使用する感じだと思います。

また、描画結果はマウスムーブ中に
四角形が描画されるだけですので、割愛します。


関連記事
・ラバーバンド (Paintイベント処理)


システム開発のためのVB.NETプログラミング関係一覧に戻る


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


google検索の結果はこちら


system-development