protected virtual void OnPaintForeground(PaintEventArgs e)
{
Color borderColor, foreColor;
if (isHovered && !isPressed && Enabled)
{
foreColor = MetroPaint.ForeColor.CheckBox.Hover(Theme);
borderColor = MetroPaint.BorderColor.CheckBox.Hover(Theme);
}
else if (isHovered && isPressed && Enabled)
{
foreColor = MetroPaint.ForeColor.CheckBox.Press(Theme);
borderColor = MetroPaint.BorderColor.CheckBox.Press(Theme);
}
else if (!Enabled)
{
foreColor = MetroPaint.ForeColor.CheckBox.Disabled(Theme);
borderColor = MetroPaint.BorderColor.CheckBox.Disabled(Theme);
}
else
{
foreColor = !useStyleColors ? MetroPaint.ForeColor.CheckBox.Normal(Theme) : MetroPaint.GetStyleColor(Style);
borderColor = MetroPaint.BorderColor.CheckBox.Normal(Theme);
}
using (Pen p = new Pen(borderColor))
{
Rectangle boxRect = new Rectangle((DisplayStatus ? 30 : 0), 0, ClientRectangle.Width - (DisplayStatus ? 31 : 1), ClientRectangle.Height - 1);
e.Graphics.DrawRectangle(p, boxRect);
}
Color fillColor = Checked ? MetroPaint.GetStyleColor(Style) : MetroPaint.BorderColor.CheckBox.Normal(Theme);
using (SolidBrush b = new SolidBrush(fillColor))
{
Rectangle boxRect = new Rectangle(DisplayStatus ? 32 : 2, 2, ClientRectangle.Width - (DisplayStatus ? 34 : 4), ClientRectangle.Height - 4);
e.Graphics.FillRectangle(b, boxRect);
}
Color backColor = BackColor;
if (!useCustomBackColor)
{
backColor = MetroPaint.BackColor.Form(Theme);
}
using (SolidBrush b = new SolidBrush(backColor))
{
int left = Checked ? Width - 11 : (DisplayStatus ? 30 : 0);
Rectangle boxRect = new Rectangle(left, 0, 11, ClientRectangle.Height);
e.Graphics.FillRectangle(b, boxRect);
}
using (SolidBrush b = new SolidBrush(MetroPaint.BorderColor.CheckBox.Hover(Theme)))
{
int left = Checked ? Width - 10 : (DisplayStatus ? 30 : 0);
Rectangle boxRect = new Rectangle(left, 0, 10, ClientRectangle.Height);
e.Graphics.FillRectangle(b, boxRect);
}
if (DisplayStatus)
{
Rectangle textRect = new Rectangle(0, 0, 30, ClientRectangle.Height);
TextRenderer.DrawText(e.Graphics, Text, MetroFonts.Link(metroLinkSize, metroLinkWeight), textRect, foreColor, MetroPaint.GetTextFormatFlags(TextAlign));
}
if (displayFocusRectangle && isFocused)
ControlPaint.DrawFocusRectangle(e.Graphics, ClientRectangle);
}