Двойное управление буферизацией вызывает появление серого - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть класс, который принимает Control и рисует сгенерированные изображения к нему. В своем коде приложения для этого я использую Panel элемент управления - который, кажется, работает хорошо, за исключением того, что я получаю много мерцаний на элементе управления, когда изображение перерисовывается. Я думаю, что решение состоит в том, чтобы включить двойную буферизацию на элементе управления. Я делаю это с помощью следующего кода:

System.Reflection.PropertyInfo aProp =
                typeof(System.Windows.Forms.Control).GetProperty(
                    "DoubleBuffered",
                    System.Reflection.BindingFlags.NonPublic |
                    System.Reflection.BindingFlags.Instance);

            aProp.SetValue(drawControl, true, null); 

После добавления этого кода изображение рисуется, а затем сразу же заменяется цветом фона серой кнопки по умолчанию - как будто система рисует поверх моего собственного контента.

Я помню, как где-то видел свойство, которое говорит системе никогда не рисовать элемент управления (что было бы идеально для меня, так как я заполняю весь элемент управления содержимым), но теперь я не могу его найти. Есть ли такое свойство, и если да, то как его включить?

Я использую C # с .NET Framework версии 4.0.

1 Ответ

1 голос
/ 19 апреля 2011

Попробуйте установить FlatStyle для элемента управления равным FlatStyle.Standard, если в данный момент он установлен на FlatStyle.System.

(Настройка DoubleBuffered отражением тоже выглядит ужасно, но, возможно, вам нужно сделать это по некоторым причинам)

...