Paint Event

Status
Niet open voor verdere reacties.

stenhoeve21

Gebruiker
Lid geworden
7 feb 2013
Berichten
26
Hallo, waarschijnlijk is het heel basaal maar ik kom niet verder met het volgende. Hoe kan ik vanuit de bntCut.Click event de sub PictureBox1_Paint met de bijbehorende code uitvoeren zodat de lijn wordt getekend in de PictureBox1? Ik zie het ff niet...

Code:
Public Class Form1
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim pen1 As New Pen(Color.Red)
        e.Graphics.DrawLine(pen1, 0, 100, 100, 100)
    End Sub

    Private Sub btnCut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCut.Click

    End Sub
End Class
 
Je kunt de Invalidate method aanroepen van je picturebox control.

(vergeet niet de Dispose method op je pen1 variable, of doe het zonder variable meteen in de method)
 
Dank voor je reactie.
Als ik het middels onderstaande code uitvoer dan wodt de lijn al getekend bij het runnen van de code. Ik wil de lijn pas tekenen als ik de btnCut gebruik, enig idee?

Code:
Public Class Form1
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim pen1 As New Pen(Color.Red)
        e.Graphics.DrawLine(pen1, 0, 100, 100, 100)
        pen1.Dispose()
    End Sub
    Private Sub btnCut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCut.Click
        PictureBox1.Invalidate()
    End Sub
End Class
 
Laatst bewerkt door een moderator:
Dit komt omdat de picturebox gepaint wordt in het begin, verplaats de code naar de button en gebruik de picturebox.CreateGraphics method als graphics om de tekenen.
 
Dat kan maar de reden waarom ik de code voor het tekenen in de PictureBox1_Paint wil uitvoeren is omdat de lijn ook bij minimaliseren en maximaliseren van het form moet blijven bestaan. Als ik de code verplaats is dit niet meer het geval.
 
Laatst bewerkt door een moderator:
Oke :P

maak een private boolean _isInitialized aan, zet deze op true als je op de button klikt en in de paintevent paint je alleen if(_isInitialized) then paint line...


(op true zetten voor je de invalidate method aanroept in de button click)
 
Laatst bewerkt:
Oke :P

maak een private boolean _isInitialized aan, zet deze op true als je op de button klikt en in de paintevent paint je alleen if(_isInitialized) then paint line...


(op true zetten voor je de invalidate method aanroept in de button click)

Thanks, dit werkt :)
Code:
Public Class Form1
    Private _isInitialized As Boolean

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        If (_isInitialized) Then
            Dim pen1 As New Pen(Color.Red)
            e.Graphics.DrawLine(pen1, 0, 100, 100, 100)
            pen1.Dispose()
        End If
    End Sub
    Private Sub btnCut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCut.Click
        _isInitialized = True
        PictureBox1.Invalidate()
    End Sub
End Class
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan