Это мне очень помогло, когда у меня возникли проблемы с двойной буферизацией. Код немного староват, но все еще охватывает основы.
http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx
Надеюсь, это поможет. :)
Я работал над одним проектом последние несколько месяцев, и у меня есть одна проблема, которую я не могу решить. У меня есть форма 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);
}
Какие-либо предложения?