WinAPI doppio buffer
-
29-09-2019 - |
Domanda
Un'applicazione predefinita WinAPI non ha doppio buffering. Invece, lo fa molto, ottimo lavoro di assicurare che solo ciò che deve essere disegnato è tratto, e che gli conferisce un aspetto senza soluzione di continuità. Tuttavia, quando si ridimensiona la finestra, l'intero fabbisogno cosa da ridisegnato, e questo provoca sfarfallio tra i controlli, lo sfondo della scheda, e, talvolta, il bianco della scheda.
Quindi la mia domanda è, qual è il modo più semplice per sostenere il doppio buffer nella mia applicazione?
Soluzione
Crea una bitmap delle dimensioni della finestra, il rendering in quella bitmap e blit che nuovamente dentro la finestra quando il gioco è fatto.
Si può fare una bella straight-forward sostituzione sul posto nel codice esistente. Invece di utilizzare un contesto di dispositivo che rende nella finestra, utilizzare uno che rende nella bitmap, e utilizzare solo il DC originale per i riferimenti nella schiena bitmap.
Essere sicuri di mantenere la bitmap in giro - non creare in ogni chiamata vernice. Hai solo bisogno di ricrearlo quando la finestra viene ridimensionata.
Altri suggerimenti
Date un'occhiata al seguente articolo: display senza sfarfallio L'utilizzo di un off-screen DC .
Questo articolo descrive una tecnica per disegno in un contesto di periferica finestra (DC) in modo tale che lo schermo una non sfarfallio. La tecnica è molto semplice e facile da implementare.
ho imparato come evitare lo sfarfallio da questo tutorial di diversi anni fa.