Как включить двойную буферизацию элемента управления с помощью C # (формы Windows)? - PullRequest
8 голосов
/ 21 октября 2008

Как включить двойную буферизацию элемента управления с помощью C # (формы Windows)?

У меня есть элемент управления панели, в который я рисую, а также элемент управления, созданный владельцем. Оба страдают от мерцания, так как я могу включить двойную буферизацию?

Ответы [ 3 ]

12 голосов
/ 21 октября 2008

В конструкторе вашего элемента управления установите свойство DoubleBuffered и / или ControlStyle соответствующим образом.

Например, у меня есть простая DoubleBufferedPanel, конструктор которой следующий:

this.DoubleBuffered = true;
this.SetStyle(ControlStyles.UserPaint | 
              ControlStyles.AllPaintingInWmPaint |
              ControlStyles.ResizeRedraw |
              ControlStyles.ContainerControl |
              ControlStyles.OptimizedDoubleBuffer |
              ControlStyles.SupportsTransparentBackColor
              , true);
1 голос
/ 21 октября 2008
0 голосов
/ 21 октября 2008

Используйте свойство DoubleBuffered, унаследованное от System.Windows.Forms.Control.

System.Windows.Forms.Form myForm = new System.Windows.forms.Form();
myForm.DoubleBuffered = true;
...