Entwickler-Ecke

WinForms - Zeichnen auf einem Panel


C#David - Di 29.05.18 09:53
Titel: Zeichnen auf einem Panel
Hey Leute,

ich arbeite an einem Programm, in welchen beim Laden einer Form ein bestimmtes geometrischen Element (z.B. ein Rechteck) gezeichner werden soll. Dazu habe ich ein "Panel" in der Form platziert und alle notwendigen Funktionsaufrufe zum Zeichnen in der Funktion "private void Form5_Load(object sender, EventArgs e)" untergebracht. Leider tut sich beim Laden überhaupt nichts...wenn ich hingegen das Klick-Event "private void panel2_Click(object sender, EventArgs e)" einfüge, wird es nach einmaligen Anklicken des Panels gezeichnet. Was mache ich verkehrt? Besten Dank!

Moderiert von user profile iconTh69: Titel geändert (war "Laden einer Form").
Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Ralf Jansen - Di 29.05.18 10:00

Zeichnen gehört in den jeweiligen Paint Event des Controls auf dem du zeichnen willst. Hier also in den Paint Event deines Panels.

Windows wird regelmäßig ein neuzeichnen einer Form aus Gründen ausführen. Dann wird der "Zeichnen"-Code jedes einzelnen Controls ausgeführt(dessen Paint Logik die auch den Paint Event ausführt). Da dein Code in Load bzw. dem ButtonClick entweder zu früh oder zu selten passiert und schon gar nicht wenn wieder mal ein neuzeichnen nötig ist siehst du das Verhalten das du da siehst.


Th69 - Di 29.05.18 11:23

s.a. meine Beiträge in
pictureBox im Hintergrund [https://www.entwickler-ecke.de/viewtopic.php?p=636676#636676]
Hintergrundbild in Spiel? [https://www.entwickler-ecke.de/viewtopic.php?p=656894#656894]