2009-08-11 3 views
0

Ich habe ein Hintergrundbild in der Datenbank gespeichert, so statt HintergrundImage Eigenschaft des Formulars Ich handle OnPaint-Ereignis, um das Bild auf dem Hintergrund für jedes Formular zu zeichnen. Das Problem besteht darin, dass jedes Steuerelement in dem Formular das übergeordnete Steuerelement ungültig macht - das Formular, so dass OnPaint mehrmals (12x) ausgelöst wird. Obwohl das Bild im Speicher ist, flackert die Form kurz. Ich muss diesen Effekt loswerden. Ich kann keinen Weg sehen, wie ich feststellen kann, welches Steuerelement das letzte ist, das das Elternformular neu streichen lässt, damit ich den Hintergrund nur einmal anwenden kann. Irgendwelche Ideen?Wie verhindert man mehrere Hintergrund Repaint .NET Winforms

protected override void OnPaint(PaintEventArgs e) 
    { 
     if (Program.AppManager.AppBackgroundImage != null && !this.EH_BackImageNotApplicable) 
     { 
      e.Graphics.DrawImage(Program.AppManager.AppBackgroundImage, this.ClientRectangle); 
     } 
    } 
+0

Können Sie den Code der OnPaint-Methode teilen? –

+0

Gerade hinzugefügt. Die OnPaint-Methode wird in meinem FormBase überschrieben. Lass es mich wissen, wenn du etwas anderes brauchst. – David

Antwort

0

Stellen Sie sicher, dass die Eigenschaft "DoubleBuffered" im Formular auf True festgelegt ist.

+0

Es half ein bisschen, aber immer noch nicht großartig. Ich wusste nicht einmal, dass es so etwas gibt. Dank dafür. – David

Verwandte Themen