Delen via


Dubbel gebufferde afbeeldingen

Flicker is een veelvoorkomend probleem bij het programmeren van afbeeldingen. Grafische bewerkingen waarvoor meerdere complexe schilderbewerkingen nodig zijn, kunnen ertoe leiden dat de gerenderde afbeeldingen flikkeren of een anderszins onacceptabel uiterlijk hebben. Om deze problemen op te lossen, biedt .NET Framework toegang tot dubbele buffering.

Dubbele buffering maakt gebruik van een geheugenbuffer om de flikkerproblemen op te lossen die zijn gekoppeld aan meerdere verfbewerkingen. Wanneer dubbele buffering is ingeschakeld, worden alle verfbewerkingen eerst weergegeven in een geheugenbuffer in plaats van het tekenoppervlak op het scherm. Nadat alle verfbewerkingen zijn voltooid, wordt de geheugenbuffer rechtstreeks gekopieerd naar het tekenoppervlak dat eraan is gekoppeld. Omdat er slechts één grafische bewerking op het scherm wordt uitgevoerd, wordt het flikkeren van het beeld dat samenhangt met complexe schilderbewerkingen geëlimineerd.

Standaard dubbele buffering

De eenvoudigste manier om dubbele buffering in uw toepassingen te gebruiken, is door de standaard dubbele buffering te gebruiken voor formulieren en besturingselementen die worden geleverd door .NET Framework. U kunt standaard dubbele buffering inschakelen voor uw Windows-formulieren en geschreven Windows-besturingselementen door de eigenschap DoubleBuffered in te stellen op true of met behulp van de methode SetStyle. Voor meer informatie, zie Handleiding: Grafische flikkering verminderen met dubbele buffering voor formulieren en bedieningselementen.

Handmatig gebufferde afbeeldingen beheren

Voor geavanceerdere scenario's voor dubbele buffering, zoals animatie of geavanceerd geheugenbeheer, kunt u de .NET Framework-klassen gebruiken om uw eigen logica voor dubbele buffering te implementeren. De klasse die verantwoordelijk is voor het toewijzen en beheren van afzonderlijke grafische buffers is de BufferedGraphicsContext klasse. Elk toepassingsdomein heeft een eigen standaard-BufferedGraphicsContext-exemplaar dat alle standaard dubbele buffering voor die toepassing beheert. In de meeste gevallen is er slechts één toepassingsdomein per toepassing, dus er is over het algemeen één standaard BufferedGraphicsContext per toepassing. Standaard BufferedGraphicsContext exemplaren worden beheerd door de BufferedGraphicsManager-klasse. U kunt een verwijzing naar het standaardexemplaar van BufferedGraphicsContext ophalen door Currentaan te roepen. U kunt ook een toegewezen BufferedGraphicsContext exemplaar maken, waarmee de prestaties voor grafisch intensieve toepassingen kunnen worden verbeterd. Voor meer informatie over het maken van een BufferedGraphicsContext instantie, zie Instructies voor het handmatig beheren van gebufferde afbeeldingen.

Handmatig gebufferde afbeeldingen weergeven

U kunt een exemplaar van de BufferedGraphicsContext-klasse gebruiken om grafische buffers te maken door de BufferedGraphicsContext.Allocateaan te roepen, die een exemplaar van de BufferedGraphics-klasse retourneert. Een BufferedGraphics-object beheert een geheugenbuffer die is gekoppeld aan een renderingoppervlak, zoals een formulier of besturingselement.

Nadat deze is geïnstantieerd, beheert de BufferedGraphics klasse de rendering naar een in-memory grafische buffer. U kunt afbeeldingen weergeven in de geheugenbuffer via de Graphics, waarmee een Graphics object wordt weergegeven dat rechtstreeks de geheugenbuffer vertegenwoordigt. U kunt dit Graphics object op dezelfde wijze schilderen als een Graphics object dat een tekenoppervlak vertegenwoordigt. Nadat alle afbeeldingen op de buffer zijn getekend, kunt u de BufferedGraphics.Render gebruiken om de inhoud van de buffer naar het tekenoppervlak op het scherm te kopiëren.

Zie voor meer informatie over het gebruik van de klasse BufferedGraphicsHandmatig gebufferde afbeeldingen weergeven. Zie Graphics and Drawing in Windows Forms voor meer informatie over het weergeven van afbeeldingen

Zie ook