2010-11-19 7 views
2

Ich bin mit Visual Studio 2008disable Hintergrund Malerei

Ich habe ein Steuerelement, das ein verarbeitetes Bild dispays. Immer wenn die Verarbeitungsparameter geändert werden, möchte ich dieses Bild aktualisieren, aber ohne zu flackern. Wenn ich verhindern könnte, dass Fenster den Bereich ausbleichen, bevor ich male, sollte das Flimmern größtenteils verschwinden.

Frage ist, wie man das macht?

So etwas wie: this.SetStyle (ControlStyles.AllPaintingInWmPaint, true); Sollte es tun, außer dass erfordert, dass ich das TableLayoutPanel-Steuerelement unterklassifizieren (etwas, was ich verbrachte eine Stunde zu versuchen), und mit dem, was ich erreichte, hatte das keine Wirkung.

Gibt es eine einfache Möglichkeit, das Hintergrundbild meiner Steuerung auszuschalten?

+0

Haben Sie die DoubleBuffered-Eigenschaft Ihres Steuerelements auf True festgelegt? –

Antwort

4

Haben Sie versucht, die OnPaintBackground Ereignis überschreiben und nichts zu tun?

protected override void OnPaintBackground(PaintEventArgs pevent) 
{ 
} 
+0

Das funktioniert für mich! – Skizz

+0

Funktioniert. Jetzt muss ich nur herausfinden, wie man das Steuerelement untergliedert, ohne den Formulareditor zu überlisten! –

-1

versuchen Sie dies:

this.SuspendLayout(); 
// do update here 
this.ResumeLayout(); 

Klarstellung: this ist die Form

+0

Ich aktualisiere nur das Bild, das ich malen möchte. Ich ändere eigentlich nichts an der Form, sondern mache sie nur ungültig, damit sie mit dem neuen Bild überstrichen wird. Das Problem ist, dass der Hintergrund gelöscht wird, bevor ich male, so dass es flackert. –

+0

Ich sehe. Entschuldigung für die Verwirrung meinerseits. –