Rechteck in Form zeichnen funktioniert nicht

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Rechteck in Form zeichnen funktioniert nicht

    Hallo,

    Ich will ein einfaches Rechteck in die Formzeichen.
    Mein Code. Steht im Load Ereignis der Form:

    VB.NET-Quellcode

    1. Dim g As Graphics = Me.CreateGraphics
    2. Dim rec As Rectangle = New Rectangle(10, 10, 100, 100)
    3. g.FillRectangle(Brushes.Black, rec)


    Ist hier was Falsch?

    Vielen Dank schonmal für die Antworten

    Mit freundlichen Grüßen
    h2oundco
    Benutze das Paint-Event des Forms und verzichte auf CreateGraphics.

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    2. Dim g As Graphics = e.Graphics
    3. Dim rec As New Rectangle(10, 10, 100, 100)
    4. g.FillRectangle(Brushes.Black, rec)
    5. End Sub

    h2oundco schrieb:

    Ist hier was Falsch?
    Das Form_Load-Event ist falsch.
    Wenn Du den Code in ein Button_Click-Event packst, funktioniert er.
    Allerdings:

    haiyyu schrieb:

    Benutze das Paint-Event des Forms und verzichte auf CreateGraphics.

    :thumbup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey,

    das Paint-Ereignis, der Name legt es nahe, ist für genau diesen Zweck bestimmt. Dieses Ereignis wird jedes Mal aufgerufen, wenn dein Formular auf dem Bildschirm (neu) gezeichnet werden muss. Es hat ua. den entscheidenden Vorteil, dass deine Zeichnung nicht teilweise oder ganz gelöscht wird, sobald z. B. eine andere Anwendung über dein Formular eingeblendet wird.

    Gruß, Manschula
    Korrekt.
    Im Paint-Event wird alles, was darzustellen ist, dargestellt, wenn ein es erforderlich ist, wenn die Form nicht mehr minimiert ist, wenn ein anderes Fenster nicht mehr davor liegt usw.
    Du kannst dies in Deinem Programm über Update() / Update(REGION) steuern.
    Außerdem kannst Du über Flags und Variablen steuern, ob und wenn ja was wo dargestellt wird. Dies ist sehr effektiv.
    Die Methoden im Paint, die auf einem Graphics-Object aufbauen, sind das sogenannte GDI, das Graphics Device Interface.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!