Procedura: ridurre lo sfarfallio nella grafica con il doppio buffering per form e controlli
Il doppio buffering utilizza una buffer di memoria per risolvere i problemi di sfarfallio associati a operazioni di disegno multiple. Quando il doppio buffering è attivo, di tutte le operazioni di disegno viene eseguito il rendering anzitutto in un buffer di memoria anziché sull'area del disegno sullo schermo. Una volta completate tutte le operazioni di disegno, il buffer di memoria viene copiato direttamente nell'area di disegno associata. Dato che sullo schermo viene eseguita una sola operazione di tipo grafico, lo sfarfallio dell'immagine associato alle operazioni di disegno più complesse viene eliminato. Per la maggioranza delle applicazioni, il doppio buffering predefinito fornito da .NET Framework determina i risultati ottimali. I controlli standard di Windows Form sono a doppio buffering per impostazione predefinita. È possibile attivare il doppio buffering predefinito nei form e nei controlli modificati in due modi. È possibile impostare la proprietà DoubleBuffered su true, oppure chiamare il metodo SetStyle per impostare il flag OptimizedDoubleBuffer su true. Entrambi i metodi attiveranno il doppio buffering predefinito per il form o controllo e forniranno un rendering della grafica privo di sfarfallio. La chiamata del metodo SetStyle è consigliata solo per i controlli personalizzati per i quali è stato scritto il codice di rendering.
Per scenari di doppio buffering più avanzati, ad esempio animazioni o gestione avanzata della memoria, è possibile implementare una logica di buffering doppio personalizzata. Per ulteriori informazioni, vedere Procedura: gestire manualmente le immagini memorizzate nel buffer.
Per ridurre lo sfarfallio
Impostare la proprietà DoubleBuffered su true.
DoubleBuffered = True
DoubleBuffered = true;
- oppure -
Chiamare il metodo SetStyle per impostare il flag OptimizedDoubleBuffer su true.
SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);