кнопки двойной буферизации c # - PullRequest
2 голосов
/ 16 октября 2011

Я работал над одним проектом последние несколько месяцев, и у меня есть одна проблема, которую я не могу решить.У меня есть форма 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);
    }

Есть предложения?

1 Ответ

1 голос
/ 18 октября 2011

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

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

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

...