Disegnare un paio di righe sull'immagine con il mouse, spostare

0

Domanda

Voglio disegnare un paio di righe su un'immagine Utilizzando il mouse, spostare in vb.net. Il mio problema è che quando inizio a disegnare la riga successiva, la precedente riga scompare! Qualcuno mi può aiutare? Ho messo il mio codice con una foto di eseguire il mio progetto

Dim st, en As New Point
Dim p As Pen
Private mouseButtonPressed As Boolean = False

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    p = New Pen(Color.Black, 2)
    Dim g As Graphics = e.Graphics
    g.DrawLine(p, st, en)
End Sub

Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
    mouseButtonPressed = False
End Sub

Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
    If mouseButtonPressed Then
        PictureBox1.Invalidate()
        en = e.Location
    End If
End Sub

Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
    If e.Button = MouseButtons.Left Then
        st = New Point(e.X, e.Y)
        mouseButtonPressed = True
    End If
End Sub

GIF of my run project

drawing vb.net
2021-11-23 06:07:57
1

Migliore risposta

0

È possibile memorizzare le linee di un elenco di come siano completati, quindi disegnare tutte le linee precedenti, quando si sta disegnando il live

Private st, en As New Point
Private mouseButtonPressed As Boolean = False

Private lines As New List(Of (st As Point, en As Point))

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    Dim p = New Pen(Color.Black, 2)
    Dim g As Graphics = e.Graphics
    g.DrawLine(p, st, en)
    For Each line In lines
        g.DrawLine(p, line.st, line.en)
    Next
End Sub

Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
    mouseButtonPressed = False
    lines.Add((st, en))
End Sub

Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
    If mouseButtonPressed Then
        PictureBox1.Invalidate()
        en = e.Location
    End If
End Sub

Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
    If e.Button = MouseButtons.Left Then
        st = New Point(e.X, e.Y)
        mouseButtonPressed = True
    End If
End Sub

L'elenco contiene Tuple(of Point, Point)

2021-11-23 15:48:51

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................