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

StackOverflow https://stackoverflow.com/questions/220100

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

System.Windows.Forms.Form myForm = new System.Windows.forms.Form();
myForm.DoubleBuffered = true;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top