Я бы не стал создавать новый LinearGradientBrush
в обработчике OnPaintBackground
.
Полагаю, вы можете достичь предела вашего объекта GDI (который вы можете проверить в диспетчере задач), поскольку я не думаю, что вы правильно утилизируете свои кисти.
Переместите это в конструктор или в функцию, которая вызывается при изменении свойств цветов и стилей (и избавьтесь от предыдущего перед созданием нового)
Вот пример того, чтоВы можете сделать это, не изменяя цвета и т. д. Свойства ...
Редактировать свойства:
public Color colourStart
{
get { return ColorA; }
set { ColorA = value; RefershBrush(); }
}
public Color colourEnd
{
get { return ColorB; }
set { ColorB = value; RefershBrush(); }
}
public LinearGradientMode colourGradientStyle
{
get { return GradientFillStyle; }
set { GradientFillStyle = value; RefershBrush(); }
}
Добавить функцию:
private void RefershBrush()
{
//I think this IF block should work with no problems, been a while working with brush
if(gradientBrush != null)
{
gradientBrush.Dispose();
}
gradientBrush = new LinearGradientBrush(ClientRectangle, ColorA, ColorB, GradientFillStyle);
Invalidate();
}