c # кнопки двойной буферизации

Я работал над одним проектом последние несколько месяцев, и у меня есть одна проблема, которую я не могу решить. У меня есть форма Windows с элементами управления на нем. Когда пользователь изменяет размер элементов управления, приложение запускает событие sizeized, и я соответствующим образом перемещаю элементы управления. Основная проблема с кнопками, потому что у них есть изображения - точнее говоря, они плоские, без рамки, и на них есть изображение, которое на самом деле является нарисованной кнопкой (причина, по которой я не рисую это кодом, заключается в том, что изображение это сложно). На некоторых машинах они начинают мерцать при изменении размера приложения. Форма имеет значение DoubleBuffered true, и я использовал эту функцию для установки двойного буфера на кнопках.

public static void SetDoubleBuffered(System.Windows.Forms.Control c)
    {
        if (System.Windows.Forms.SystemInformation.TerminalServerSession)
            return;

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

        aProp.SetValue(c, true, null);
    }

Какие-либо предложения?

c#,winforms,doublebuffered,

2

Ответов: 1


Это мне очень помогло, когда у меня возникли проблемы с двойной буферизацией. Код немного староват, но все еще охватывает основы.

http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx

Надеюсь, это поможет. :)

C #, WinForms, DoubleBuffered,
Похожие вопросы
Яндекс.Метрика