Dubbel buffrad grafik
Flimmer är ett vanligt problem när du programmerar grafik. Grafikåtgärder som kräver flera komplexa målningsåtgärder kan göra att de renderade bilderna ser ut att flimra eller ha ett på annat sätt oacceptabelt utseende. För att lösa dessa problem ger .NET Framework åtkomst till dubbel buffring.
Dubbel buffring använder en minnesbuffert för att lösa de flimmerproblem som är associerade med flera färgåtgärder. När dubbel buffring är aktiverat återges först alla färgåtgärder till en minnesbuffert i stället för ritytan på skärmen. När alla färgåtgärder har slutförts kopieras minnesbufferten direkt till ritytan som är associerad med den. Eftersom endast en grafikåtgärd utförs på skärmen elimineras bildflimmer som är associerad med komplexa målningsåtgärder.
Standard dubbel buffring
Det enklaste sättet att använda dubbel buffring i dina program är att använda standarddubblettbuffertning för formulär och kontroller som tillhandahålls av .NET Framework. Du kan aktivera standard dubbel buffring för dina Windows-formulär och författade Windows-kontroller genom att ange egenskapen DoubleBuffered till true
eller med hjälp av metoden SetStyle. För mer information, se Hur man minskar grafisk flimring med dubbel buffring för formulär och kontroller.
Hantera buffrad grafik manuellt
För mer avancerade scenarier med dubbel buffring, till exempel animering eller avancerad minneshantering, kan du använda .NET Framework-klasserna för att implementera din egen logik för dubbelbuffertning. Klassen som ansvarar för att allokera och hantera enskilda grafikbuffertar är den BufferedGraphicsContext klassen. Varje programdomän har sin egen standardinstans BufferedGraphicsContext som hanterar all standard dubbel buffring för programmet. I de flesta fall finns det bara en programdomän per program, så det finns vanligtvis en standard BufferedGraphicsContext per program. Standardinstanser BufferedGraphicsContext hanteras av klassen BufferedGraphicsManager. Du kan hämta en referens till standardinstansen BufferedGraphicsContext genom att anropa Current. Du kan också skapa en dedikerad BufferedGraphicsContext instans som kan förbättra prestanda för grafiskt intensiva program. Information om hur du skapar en BufferedGraphicsContext-instans finns i Så här: Hantera buffrad grafik manuellt.
Visa buffrad grafik manuellt
Du kan använda en instans av klassen BufferedGraphicsContext för att skapa grafikbuffertar genom att anropa BufferedGraphicsContext.Allocate, som returnerar en instans av klassen BufferedGraphics. Ett BufferedGraphics-objekt hanterar en minnesbuffert som är associerad med en återgivningsyta, till exempel ett formulär eller en kontroll.
När den har instansierats hanterar klassen BufferedGraphics återgivning till en minnesintern grafikbuffert. Du kan återge grafik till minnesbufferten via Graphics, som exponerar ett Graphics objekt som direkt representerar minnesbufferten. Du kan måla på det här Graphics-objektet precis som du skulle göra med ett Graphics-objekt som representerar en rityta. När alla bilder har ritats till bufferten kan du använda BufferedGraphics.Render för att kopiera innehållet i bufferten till ritytan på skärmen.
Mer information om hur du använder klassen BufferedGraphics finns i manuellt återge buffrad grafik. Mer information om att återge grafik finns i Grafik och ritning i Windows Forms
Se även
.NET Desktop feedback