Это влияет только на форму, а не на элементы управления для детей. Если у вас их много, тогда время, когда им нужно по очереди рисовать самих себя, становится заметным, оно оставляет прямоугольное отверстие, в котором находится элемент управления, который не заполняется до тех пор, пока дочерний элемент управления не повернется.
Что нужно для борьбы с этим, это двойная буферизация всей формы и элементов управления. Это опция, доступная с Windows XP, которая сделала флаг стиля WS_EX_COMPOSITED доступным. Вставьте в форму, чтобы включить его:
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
Это не ускорит картину на всех, но форма щелкает на экран после задержки. Устранение видимых артефактов. Действительно, фиксация задержки требует использования элементов управления. Что бы вы сделали, используя метод OnPaint, чтобы нарисовать «элементы управления» и сделать событие OnMouseClick умным о том, что пользователь «нажал» «контроль».
WS_EX_COMPOSITED работает только над классической темой под win7/vista, а не по теме aero. Кто-нибудь знает решение в этом случае? – KevinBui
@ DKhanh - это сработало для меня на Aero –
Это работает как шарм (а не ссылка на брандмауэр Windows 8, но я надеюсь, что он тоже работает на Windows 8, а также XP). –