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