public override void CPDrawRadioButton (Graphics dc, Rectangle rectangle, ButtonState state)
{
CPColor cpcolor = ResPool.GetCPColor (ColorControl);
Color dot_color = Color.Black;
Color top_left_outer = Color.Black;
Color top_left_inner = Color.Black;
Color bottom_right_outer = Color.Black;
Color bottom_right_inner = Color.Black;
int ellipse_diameter = (rectangle.Width > rectangle.Height) ? (int)(rectangle.Height * 0.9f) : (int)(rectangle.Width * 0.9f);
int radius = ellipse_diameter / 2;
Rectangle rb_rect = new Rectangle (rectangle.X + (rectangle.Width / 2) - radius, rectangle.Y + (rectangle.Height / 2) - radius, ellipse_diameter, ellipse_diameter);
Brush brush = null;
if ((state & ButtonState.All) == ButtonState.All) {
brush = ResPool.GetHatchBrush (HatchStyle.Percent50, Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
ColorControl.G, ColorControl.B), ColorControl);
dot_color = cpcolor.Dark;
} else
if ((state & ButtonState.Flat) == ButtonState.Flat) {
if (((state & ButtonState.Inactive) == ButtonState.Inactive) || ((state & ButtonState.Pushed) == ButtonState.Pushed))
brush = ResPool.GetHatchBrush (HatchStyle.Percent50, Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255), ColorControl.G, ColorControl.B), ColorControl);
else
brush = SystemBrushes.ControlLightLight;
} else {
if (((state & ButtonState.Inactive) == ButtonState.Inactive) || ((state & ButtonState.Pushed) == ButtonState.Pushed))
brush = ResPool.GetHatchBrush (HatchStyle.Percent50, Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255), ColorControl.G, ColorControl.B), ColorControl);
else
brush = SystemBrushes.ControlLightLight;
top_left_outer = cpcolor.Dark;
top_left_inner = cpcolor.DarkDark;
bottom_right_outer = cpcolor.Light;
bottom_right_inner = Color.Transparent;
if ((state & ButtonState.Inactive) == ButtonState.Inactive)
dot_color = cpcolor.Dark;
}
dc.FillEllipse (brush, rb_rect.X + 1, rb_rect.Y + 1, ellipse_diameter - 1, ellipse_diameter - 1);
int line_width = Math.Max (1, (int)(ellipse_diameter * 0.08f));
dc.DrawArc (ResPool.GetSizedPen (top_left_outer, line_width), rb_rect, 135.0f, 180.0f);
dc.DrawArc (ResPool.GetSizedPen (top_left_inner, line_width), Rectangle.Inflate (rb_rect, -line_width, -line_width), 135.0f, 180.0f);
dc.DrawArc (ResPool.GetSizedPen (bottom_right_outer, line_width), rb_rect, 315.0f, 180.0f);
if (bottom_right_inner != Color.Transparent)
dc.DrawArc (ResPool.GetSizedPen (bottom_right_inner, line_width), Rectangle.Inflate (rb_rect, -line_width, -line_width), 315.0f, 180.0f);
else
using (Pen h_pen = new Pen (ResPool.GetHatchBrush (HatchStyle.Percent50, Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255), ColorControl.G, ColorControl.B), ColorControl), line_width)) {
dc.DrawArc (h_pen, Rectangle.Inflate (rb_rect, -line_width, -line_width), 315.0f, 180.0f);
}
if ((state & ButtonState.Checked) == ButtonState.Checked) {
int inflate = line_width * 4;
Rectangle tmp = Rectangle.Inflate (rb_rect, -inflate, -inflate);
if (rectangle.Height > 13) {
tmp.X += 1;
tmp.Y += 1;
tmp.Height -= 1;
dc.FillEllipse (ResPool.GetSolidBrush (dot_color), tmp);
} else {
Pen pen = ResPool.GetPen (dot_color);
dc.DrawLine (pen, tmp.X, tmp.Y + (tmp.Height / 2), tmp.Right, tmp.Y + (tmp.Height / 2));
dc.DrawLine (pen, tmp.X, tmp.Y + (tmp.Height / 2) + 1, tmp.Right, tmp.Y + (tmp.Height / 2) + 1);
dc.DrawLine (pen, tmp.X + (tmp.Width / 2), tmp.Y, tmp.X + (tmp.Width / 2), tmp.Bottom);
dc.DrawLine (pen, tmp.X + (tmp.Width / 2) + 1, tmp.Y, tmp.X + (tmp.Width / 2) + 1, tmp.Bottom);
}
}
}