To improve the appearance of the user interface, not a large cross
private void DrawCheckBox(Graphics g, Rectangle bounds, CheckState state) { int size; int boxTop; size = bounds.Size.Height < bounds.Size.Width ? bounds.Size.Height : bounds.Size.Width; size = size > ((int)g.DpiX / 7) ? ((int)g.DpiX / 7) : size; boxTop = bounds.Y + (bounds.Height - size) / 2; size = 12; // 13, so I made it 12 boxTop = boxTop - 1; using (Pen p = new Pen(this.Owner.ForeColor)) { g.DrawRectangle(p, bounds.X, boxTop, size, size); } if (state != CheckState.Unchecked) { using (Pen p = new Pen(state == CheckState.Indeterminate ? SystemColors.GrayText : SystemColors.ControlText)) { p.Width = 2; int offset = 2; int edgeOffset = 2; g.DrawLine(p, bounds.X + offset, boxTop + offset + 2, bounds.X + (size / 2) - edgeOffset, boxTop + (size / 2) + edgeOffset); g.DrawLine(p, bounds.X + (size / 2) - edgeOffset, boxTop + (size / 2) + edgeOffset, bounds.X + size - offset, boxTop + offset); } } }
source share