Метод OnPaintBackground никогда не вызывается для элемента управления, полученного из Button
Я сделал классGradientButton
который должен быть кнопкой, которая заполнена градиентным фоном.
Я рисую градиентную заливку вOnPaintBackground()
метод. К сожалению, это никогда не вызывается, конечно, я добавилGradientButton
кForm
через панель инструментов:
public class GradientButton : Button {
public Color Color1 { get; set; }
public Color Color2 { get; set; }
public float Angle { get; set; }
public GradientButton() {
Color1 = Color.YellowGreen;
Color2 = Color.LightGreen;
Angle = 30;
}
protected override void OnPaintBackground(PaintEventArgs e) {
base.OnPaintBackground(e);
Debug.WriteLine("This never prints");
using (LinearGradientBrush brush = new LinearGradientBrush(this.ClientRectangle,
Color1,
Color2,
Angle)) {
e.Graphics.FillRectangle(brush, this.ClientRectangle);
}
}
protected override void OnResize(EventArgs e) {
base.OnResize(e);
Invalidate();
}
}
Вопрос: Как заполнить фон кнопки градиентом? ЗачемOnPaintBackground
не вызывается? Насколько я знаю это надо называть доOnPaint
метод.