Двойную буферизацию всей формы можно выполнить, установив для значений ControlStyles «AllPaintingInWmPaint», «UserPaint» и «DoubleBuffer» значение «true» (this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true)
).
Но этого не может произойти с System.Windows.Forms.Panel, потому что класс не позволяет мне это делать. Я нашел одно решение: http://bytes.com/topic/c-sharp/answers/267635-double-buffering-panel-control. Я также пробовал это: Двойная буферизация Winforms. Это тормозит, даже когда он используется на небольшом чертеже, у меня есть некоторые настраиваемые ресурсы, которые я использую в форме, и другие вещи, из-за которых я не буду превращать всю форму в один рисунок. А со вторым вроде бы проблемы. Есть ли другие способы сделать это?
Я спрашиваю об этом, потому что не хочу, чтобы рисунок на панели постоянно мигал при изменении размера формы. Если есть способ избавиться от перепрошивки без двойной буферизации, буду рад узнать.