Laden...

Refresh/Invalidate von Panel bzw. Grafik

Erstellt von Spacewalker vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.787 Views
Thema geschlossen
S
Spacewalker Themenstarter:in
3 Beiträge seit 2014
vor 9 Jahren
Refresh/Invalidate von Panel bzw. Grafik

Hallo,

ich bin neu in C# und benutze Visual Studio 2010 und Windows Forms.

Ich habe eine Form (formSpielfeld) mit einem Panel (panelSpielfeld) das ich mit .CreateGraphics() als Grafikobjekt für ein kleines Spiel benutze.

Nun habe ich das Problem, dass wenn ich per MessageBox.Show während dem Spiel eine Meldung anzeige die Grafik des Spiels durch die MessageBox überschrieben wird, d.h wenn ich die MessageBox schliesse dann sehe ich ein graues Rechteck im Spielfeld da wo vorher die Messagebox war.

Ich bin beim Rumsuchen z.B auf "Invalidate" gestossen...aber was ich bei Invalidate nicht verstehe:
Wann bzw. wo sollte ich "invalide" aufrufen?

Nach jedem "Messagebox.show?"
Das würde ja zumindest theoretisch noch gehen...aber wie würde ich wissen wann ich invalide aufrufen muss wenn zum Beispiel eine andere Anwendung (Notepad, Calc etc.) über meiner Spielgrafik stand? Oder meine Anwendung minimiert wurde ? oder der Screensaver aktiv wurde? In all diesen Fällen wird meine Form bzw.Panel überschrieben.

Meine Frage ist also wie ich sicherstellen kann, dass die Grafik (das Panel) meines Spiel immer angezeigt\refreshed wird auch wenn zwischenzeitlich Messageboxen (oder auch andere Anwendungen, Screensaver...) über meiner Anwendung erscheinen ?

Danke

4.942 Beiträge seit 2008
vor 9 Jahren

Hallo und willkommen,

du scheinst eine falsche Herangehensweise für das Zeichnen zu verwenden. Du darfst nur im Paint-Ereignis zeichnen, s. [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)
Und dann wird bei Wiederanzeigen des Fensters (bzw. Teile davon) von Windows automatisch "Invalidate" aufgerufen und deine Steuerelement (bzw. die Grafik dadrin) wird neu gezeichnet.

Hinweis von herbivore vor 9 Jahren

... und statt CreateGraphics solltest du unbedingt e.Graphics verwenden. Gehört aber ebenfalls zu den Grundlagen und steht aber auch im Tutorial. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

Thema geschlossen