Я занимаюсь разработкой приложения на C # Winforms. Графический интерфейс отчасти действительно огромный (более 200 элементов управления на форму). До недавнего времени у меня были большие проблемы с мерцанием. Я получил контроль над проблемой с помощью WS_EX_COMPOSITED на главной панели:
public class MainPanel : Panel {
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
return cp;
}
}
...
К сожалению, применение WS_EX_COMPOSITED имеет некоторые побочные эффекты. Одна из проблем заключается в том, что рисование элементов управления больше не работает. Следующий код работает, только если WS_EX_COMPOSITED не используется:
Graphics gr = myControl.CreateGraphics();
gr.DrawLine(new Pen(Color.Red, 10), 0,0 , 1000, 100);
Я бы предпочел по-прежнему использовать WS_EX_COMPOSITED, за исключением элементов управления, на которых я рисую.