我有一个类的CircularButton扩展了Button和一个按钮,它没有显示文本,有或没有BackColor。无法弄清楚发生了什么:
public class CircularButton : Button {
public CircularButton(Color c, String text){
Font = new Font("Arial", 20f, FontStyle.Bold);
BackColor = c;
Text = text;
}
public Action<PaintEventArgs> DoPaint { get; set; }
protected override void OnPaint(PaintEventArgs e) {
if (DoPaint != null) { DoPaint(e); }
}
}
//make a new circular button, the text is just a letter.
CircularButton btn = new CircularButton(Color.Red,"A");
btn.Bounds = new Rectangle(0, 0, 50, 50);
btn.Enabled = false;
btn.DoPaint = delegate(PaintEventArgs p){
Graphics graphics = p.Graphics;
SolidBrush brush1 = new SolidBrush(SystemColors.ButtonFace);
graphics.FillRectangle(brush1, 0, 0, btn.Width, btn.Height);
SolidBrush brush2 = new SolidBrush(btn.BackColor);
graphics.FillEllipse(brush2, 0, 0, btn.Width, btn.Height);
};
答案 0 :(得分:1)
您正在覆盖OnPaint
,它会在基本按钮中绘制文本。所以你必须自己写文字:
graphics.DrawString(btn.Text, btn.Font, new SolidBrush(btn.ForeColor), x, y);