2,892 questions
You can use the method from Let the user draw lines in C#
Public Class Form1
Private Segments As List(Of Segment) = New List(Of Segment)()
Private NewSegment As Segment = Nothing
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
NewSegment = New Segment(Pens.Blue, e.Location, e.Location)
PictureBox1.Refresh()
End Sub
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.Clear(PictureBox1.BackColor)
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
For Each segment As Segment In Segments
segment.Draw(e.Graphics)
Next
If NewSegment IsNot Nothing Then NewSegment.Draw(e.Graphics)
End Sub
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
If NewSegment Is Nothing Then Return
NewSegment.pt2 = e.Location
PictureBox1.Refresh()
End Sub
Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
If NewSegment Is Nothing Then Return
NewSegment.pen1 = Pens.Black
Segments.Add(NewSegment)
NewSegment = Nothing
PictureBox1.Refresh()
End Sub
End Class
Class Segment
Public pen1 As Pen
Public pt1, pt2 As Point
Public Sub New(pen As Pen, point1 As Point, point2 As Point)
pen1 = pen
pt1 = point1
pt2 = point2
End Sub
Public Sub Draw(gr As Graphics)
gr.DrawLine(pen1, pt1, pt2)
End Sub
End Class