Freigeben über


Doppelt gepufferte Grafiken

Aktualisiert: November 2007

Flimmern ist ein häufiges Problem beim Programmieren von Grafiken. Grafikoperationen, die mehrere komplexe Zeichenoperationen erfordern, können dazu führen, dass gerenderte Bilder flimmern oder in unzufrieden stellender Weise dargestellt werden. Um diese Probleme zu beheben, stellt .NET Framework Zugriff auf doppelte Pufferung bereit.

Bei der doppelten Pufferung werden Flimmerprobleme, die durch mehrere Zeichenoperationen entstehen, mithilfe eines Arbeitsspeicherpuffers behoben. Wenn die doppelte Pufferung aktiviert ist, werden alle Zeichenoperationen anstelle der Zeichenoberfläche auf dem Bildschirm zunächst in einen Arbeitsspeicherpuffer gerendert. Nachdem alle Zeichenoperationen abgeschlossen sind, wird der Arbeitsspeicherpuffer direkt in die damit verbundene Zeichenoberfläche kopiert. Da auf dem Bildschirm nur eine Grafikoperation ausgeführt wird, wird das durch komplexe Zeichenoperationen ausgelöste Bildflimmern beseitigt.

Standardmäßige doppelte Pufferung

Die einfachste Möglichkeit, die doppelte Pufferung in Anwendungen zu verwenden, bietet die doppelte Pufferung für Formulare und Steuerelemente, die standardmäßig von .NET Framework bereitgestellt wird. Sie können die standardmäßige doppelte Pufferung für Windows Forms und erstellte Windows-Steuerelemente aktivieren, indem Sie die DoubleBuffered-Eigenschaft auf true festlegen oder die SetStyle-Methode verwenden. Weitere Informationen finden Sie unter Gewusst wie: Reduzieren von Grafikflimmern mit doppelter Pufferung für Formulare und Steuerelemente.

Manuelle Verwaltung von gepufferten Grafiken

Bei anspruchsvolleren Szenarien mit doppelter Pufferung, wie Animationen oder erweiterter Speicherverwaltung, können Sie mithilfe der .NET Framework-Klassen Ihre eigene doppelte Pufferungslogik implementieren. Die Klasse, die für das Zuordnen und Verwalten einzelner Grafikpuffer verantwortlich ist, ist die BufferedGraphicsContext-Klasse. Jede Anwendungsdomäne verfügt über eine standardmäßige BufferedGraphicsContext-Instanz, die die gesamte standardmäßige doppelte Pufferung für die Anwendung verwaltet. In den meisten Fällen verfügt jede Anwendung nur über eine Anwendungsdomäne, d. h. normalerweise ist jeder Anwendung ein standardmäßiger BufferedGraphicsContext zugeordnet. BufferedGraphicsContext-Standardinstanzen werden von der BufferedGraphicsManager-Klasse verwaltet. Sie können einen Verweis auf die standardmäßige BufferedGraphicsContext-Instanz abrufen, indem Sie die BufferedGraphicsManager.Current-Eigenschaft aufrufen. Sie können auch eine dedizierte BufferedGraphicsContext-Instanz erstellen, die die Leistung von grafisch anspruchsvollen Anwendungen verbessern kann. Informationen über die Erstellung einer BufferedGraphicsContext-Instanz finden Sie unter Gewusst wie: Manuelles Verwalten von gepufferten Grafiken.

Manuelles Anzeigen von gepufferten Grafiken

Sie können eine Instanz der BufferedGraphicsContext-Klasse verwenden, um Grafikpuffer zu erstellen, indem Sie die BufferedGraphicsContext.Allocate-Methode aufrufen, die eine Instanz der BufferedGraphics-Klasse zurückgibt. Das BufferedGraphics-Objekt verwaltet einen Arbeitsspeicherpuffer, der mit einer Renderingoberfläche verknüpft ist, beispielsweise ein Formular oder ein Steuerelement.

Nach der Instanziierung verwaltet die BufferedGraphics-Klasse das Rendering an einen Grafikpuffer im Arbeitsspeicher. Sie können Grafiken mithilfe der BufferedGraphics.Graphics-Eigenschaft in den Arbeitsspeicherpuffer rendern, wodurch ein Graphics-Objekt verfügbar gemacht wird, das dem Arbeitsspeicherpuffer direkt entspricht. Sie können in dieses Graphics-Objekt ebenso zeichnen wie in ein Graphics-Objekt, das eine Zeichenoberfläche darstellt. Nachdem alle Grafiken in den Puffer gezeichnet wurden, können Sie die BufferedGraphics.Render-Methode verwenden, um den Inhalt des Puffers in die Zeichenoberfläche auf dem Bildschirm zu kopieren.

Weitere Informationen über die Verwendung der BufferedGraphics-Klasse finden Sie unter Manuelles Rendern von gepufferten Grafiken. Weitere Informationen zum Rendern von Grafiken finden Sie unter Grafik und Zeichnen in Windows Forms.

Siehe auch

Aufgaben

Gewusst wie: Manuelles Rendern von gepufferten Grafiken

Gewusst wie: Reduzieren von Grafikflimmern mit doppelter Pufferung für Formulare und Steuerelemente

Gewusst wie: Manuelles Verwalten von gepufferten Grafiken

Referenz

BufferedGraphics

BufferedGraphicsContext

BufferedGraphicsManager

Weitere Ressourcen

Grafik und Zeichnen in Windows Forms