Как изменение размера обрабатывается DWM? C#

Я попытался создать собственную форму без полей для своего приложения. Я решил, что он должен быть изменяемого размера, поэтому я поместил 8 панелей по бокам (4 угла, фактически 4 стороны) и создал код, который будет изменять размеры моей формы при вызове. Как, например:

    private void E_MouseDown(object sender, MouseEventArgs e)
    {
        Active = true;
    }
    private void East_MouseMove(object sender, MouseEventArgs e)
    {
        if (Active)
        {
            this.Size = new Size(this.Width + e.Location.X, this.Height);
            this.Refresh();

        }
    }
    private void E_MouseUp(object sender, MouseEventArgs e)
    {
        Active = false;
    }

К сожалению, изменение размера происходит медленно, перегружает процессор и выполняет визуальные сбои даже при двойной буферизации для включенной формы. У меня довольно много элементов управления в моей форме. Но что я заметил, так это тот факт, что при переключении на стандартную границу (например, Sizable), а DWM обрабатывает окно Chrome, изменение размера идеально. Никаких глюков, заиканий и мерцаний. Поэтому я удивился, как Windows справляется? Есть ли способ имитировать то, что он делает через 8 панелей? Я ненавижу, когда он мерцает, и это останавливает мой проект без причины. Дело в том, что я работал весь день, чтобы имитировать хром окна Visual Studio 2013 и почти преуспел, есть только эта досадная проблема... Можете ли вы помочь, пожалуйста?

Благодарю.

0 ответов

Другие вопросы по тегам