Flackern bei Resize verhindern?

MichiStroi

Erfahrenes Mitglied
Hi,
Folgendes Problem:

Ich zeichne ein Diagramm in einem Panel und habe die größe dessen auf die Fenstergröße verknüpft.
Beim ändern der Fenstergröße wird das Diagramm durch meine Resize Klasse neu gezeichnet. Das ganze wirkt aber sehr störend, da es extrem Flackert.

2.Problem:
Ich biete die Möglichkeit in das Diagram zu zoomen, dazu zeichne ich ein Rechteck vom MouseDown-Punkt zum MouseMove-Punkt. Das Rechteck soll also jedesmal wieder neu gezeichnet werden. Allerdings das Diagramm kann gleich bleiben damit es nicht flackert.

Hat jemand eine Idee wie man dies optimieren kann?
Danke!
lg Michi
 
Zuletzt bearbeitet:
Hi,
kann ich das auch für ein Panel einstellen?
Denn...
Code:
public void EnableDoubleBuffering()
{
   // Set the value of the double-buffering style bits to true.
   this.SetStyle(ControlStyles.DoubleBuffer | 
      ControlStyles.UserPaint | 
      ControlStyles.AllPaintingInWmPaint,
      true);
   this.UpdateStyles();
}
...bewirkt bei mir gar nichts.


Schönen Dank!
lg Michi
 
Damit DoubleBuffer für ein Panel funktioniert, müsstest du von Panel eine Klasse ableiten, dort die entsprechenden DoubleBuffer etc. Einträge vornehmen und dann das von dir erstellte abgeleitete Panel verwenden.

Eine andere Möglichkeit besteht darin, den Beginn des Resizes, sowie das Ende des Resizes abzufangen und in der Zwischenzeit die Neuzeichnung deines Diagramms zu verhindern. D.h. erst, wenn der Resize abgeschlossen ist, wird gezeichnet.
 
Hi,

Danke, das Erste ist für meine Kenntnisse glaub ich etwas zuviel, aber das Zweite klingt nach einer guten und einfachen Lösung für mein Problem.
Kann ich eigentlich irgendetwas wie zb. ein Panel auch transparent machen, sodass ich mein Auswahlrechteck über dem eigentlichen Diagramm zeichnen kann ohne dieses Flackern durch die Neuzeichnung meines Diagrammes zu erhalten?

Schönen Dank!
lg Michi
 
Hi.

Also Formulare kannst mit dem Opacity-Property trnsparent machen, für Panel gibts das - meines wissens - nicht, lasse mich aber auch gerne eines besseren Belehren.


MfG Alexander12
 
Opacity hilft das wenig weiter. Denn bei 100% Druchsichtigkeit sieht man nix mehr ;)

Aber:
Du kannst die BackgroundColor auf "transparent" setzen. Zu finden im Register Web.
 
hast du das mit transparent schon getestet?
Ich erhalte nämlich dennoch ein graues Fenster anstelle transparent.
lg Michi
 
wo hast du denn Transparent gesetzt? Bei der Form oder beim Panel?
Bei der Form ist das nicht möglich, macht auch keinen Sinn. Du kannst Transparent nur bei Controls nutzen.
 
Schon klar...
Gibt's da eine andere Alternative? Wenn man in #Develop ein Rechteck aufzieht (mit dem Auswahlwerkzeug) dann Flackert ja auch nur das Rechteck und sonst nichts.
Wie geht das denn dort?
lg Michi
 

Anhänge

  • panel.gif
    panel.gif
    19,5 KB · Aufrufe: 342

Neue Beiträge

Zurück