1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| namespace Popo.Components
{
public class PopoCheckbox: CheckBox
{
public PopoCheckbox()
{
CheckMarkColor = Color.Black;
CheckMarkBackColor = Color.White;
}
public Color CheckMarkColor { get; set; }
public Color CheckMarkBackColor { get; set; }
protected override void OnPaint(PaintEventArgs pevent)
{
// Taille de la case en fonction de la taille de la fonte
Int32 side = Convert.ToInt32(Math.Floor(pevent.Graphics.MeasureString(Text, Font, Width).Height));
pevent.Graphics.FillRectangle(new SolidBrush(BackColor), 0, 0, Width, Height);
if (Checked)
{
Int32 x = Convert.ToInt32(Font.Height / Font.Size); // Problème principal : ceci renvoie systématiquement 2
Int32 y = x + 1;
pevent.Graphics.FillRectangle(new SolidBrush(CheckMarkBackColor), new Rectangle(0, 0, side, side));
pevent.Graphics.DrawString("ü", new Font("Wingdings", Font.Size, Font.Style), new SolidBrush(CheckMarkColor), x, y);
}
else
{
pevent.Graphics.FillRectangle(new SolidBrush(BackColor), new Rectangle(0, 0, side, side));
pevent.Graphics.DrawRectangle(new Pen(ForeColor), new Rectangle(0, 0, side - 1, side - 1));
}
pevent.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), side, 0);
}
}
} |
Partager