У меня очень большое приложение winforms C # .net 2.0, в котором есть некоторые проблемы с рисованием.
При переходе к различным формам вы можете видеть нарисованные элементы управления и даже строку заголовка формы, которая изменяется и затем исчезает.
Базовая форма, от которой наследуются все другие формы, имеет следующий код в своем конструкторе. Включая установку DoubleBuffering в true.
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.UpdateStyles();
Формы также имеют фоновый градиент, но его удаление не влияет на скорость.
Все элементы управления и формы наследуются от базовых версий.
Что я могу добавить или проверить, чтобы помочь со скоростью рисования?
Код внутри OnPaint
if (this.b_UseBackgroundGradient)
{
Graphics graphics = e.Graphics;
Rectangle backgroundRectangle = this.ClientRectangle;
this.SuspendLayout();
if (backgroundRectangle.Width != 0 && backgroundRectangle.Height != 0)
{
using (Brush backgroundBrush = new LinearGradientBrush(backgroundRectangle, base.BackColor, this.BackGradiantColour, LinearGradientMode.ForwardDiagonal))
{
graphics.FillRectangle(backgroundBrush, backgroundRectangle);
}
}
this.ResumeLayout();
}
else
{
base.OnPaint(e);
}