Domanda

Come posso abilitare il doppio buffering di un controllo usando C # (Windows Form)?

Ho un controllo pannello in cui sto disegnando elementi e anche un controllo scheda disegnato dal proprietario. Entrambi soffrono di sfarfallio, quindi come posso abilitare il doppio buffering?

È stato utile?

Soluzione

Nel costruttore del controllo, imposta la proprietà DoubleBuffered e / o ControlStyle in modo appropriato.

Ad esempio, ho un semplice DoubleBufferedPanel il cui costruttore è il seguente:

this.DoubleBuffered = true;
this.SetStyle(ControlStyles.UserPaint | 
              ControlStyles.AllPaintingInWmPaint |
              ControlStyles.ResizeRedraw |
              ControlStyles.ContainerControl |
              ControlStyles.OptimizedDoubleBuffer |
              ControlStyles.SupportsTransparentBackColor
              , true);

Altri suggerimenti

Utilizza la proprietà DoubleBuffered, ereditata da System.Windows.Forms.Control.

System.Windows.Forms.Form myForm = new System.Windows.forms.Form();
myForm.DoubleBuffered = true;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top