WS_EX_COMPOSITED предотвращает рисование - PullRequest
1 голос
/ 19 июня 2019

Я занимаюсь разработкой приложения на 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, за исключением элементов управления, на которых я рисую.

...