public static void RenderCheckButton(Graphics g, Rectangle rect, SmartCheckBoxThemeBase xtheme, bool enable, CheckState checkState, SmartButtonState state, string text, CheckMarkAlignment checkAlign, bool drawFocus) { Rectangle rectCheck, rectText; RadioButtonPainter.GetCheckRectAndTextRect( rect, xtheme.InnerPaddingWidth, xtheme.CheckRectWidth, xtheme.SpaceBetweenCheckMarkAndText, checkAlign, text, xtheme.TextFont, out rectCheck, out rectText); CheckRectPainter.RenderCheckRect( g, rectCheck, xtheme, enable, checkState, state); rectText.Offset(0, -1); TextRenderer.DrawText( g, text, xtheme.TextFont, rectText, enable ? xtheme.TextColor : xtheme.TextColorDisabled, TextFormatFlags.Left); if (drawFocus) BasicBlockPainter.RenderFocusRect(g, rectText, 0); }
public static void RenderCheckRect(Graphics g, Rectangle rect, SmartCheckBoxThemeBase xtheme, bool enable, CheckState checkState, SmartButtonState state) { if (rect.Width < 1 || rect.Height < 1) return; // get back-color Color backColor; if (!enable) { backColor = xtheme.CheckRectBackColorDisabled; } else { switch (state) { case SmartButtonState.Hover: backColor = xtheme.CheckRectBackColorHighLight; break; case SmartButtonState.Pressed: backColor = xtheme.CheckRectBackColorPressed; break; default: backColor = xtheme.CheckRectBackColorNormal; break; } } // get outter-rect-color Color rectColor = enable ? xtheme.CheckRectColor : xtheme.CheckRectColorDisabled; // get inner-flag-color Color flagColor = enable ? xtheme.CheckFlagColor : xtheme.CheckFlagColorDisabled; using (NewSmoothModeGraphics ng = new NewSmoothModeGraphics(g, SmoothingMode.HighSpeed)) { // draw check rect backcolor using (SolidBrush sb = new SolidBrush(backColor)) { g.FillRectangle(sb, rect); } // draw check rect border using (Pen p = new Pen(rectColor)) { rect.Height--; rect.Width--; g.DrawRectangle(p, rect); // high light if (xtheme.HighLightCheckRect && state == SmartButtonState.Hover && enable) { using (Pen p2 = new Pen(Color.FromArgb(40, rectColor))) { p2.Width = 3; p2.Alignment = PenAlignment.Center; g.DrawRectangle(p2, rect); } } rect.Height++; rect.Width++; } // draw Indeterminate flag if (checkState == CheckState.Indeterminate) { rect.Inflate(-xtheme.InnerRectInflate, -xtheme.InnerRectInflate); using (SolidBrush sb = new SolidBrush(flagColor)) { g.FillRectangle(sb, rect); } } } // draw check flag if (checkState == CheckState.Checked) { using (NewSmoothModeGraphics ng = new NewSmoothModeGraphics(g, SmoothingMode.AntiAlias)) { rect.Inflate(-2, -2); rect.Height -= 3; rect.Width--; PointF p1 = new PointF(rect.X, rect.Y + rect.Height / 2.0f); PointF p2 = new PointF(rect.X + rect.Width / 3.0f, rect.Bottom); PointF p3 = new PointF(rect.Right + 1, rect.Y - 1); using (Pen p = new Pen(flagColor)) { p.Width = 1.6f; p.StartCap = LineCap.Round; p.EndCap = LineCap.Round; g.DrawLines(p, new PointF[] { p1, p2, p3 }); p2.Y += 1.8f; g.DrawLines(p, new PointF[] { p1, p2, p3 }); } } } }
public void SetNewTheme(SmartCheckBoxThemeBase xtheme) { if (xtheme == null) throw new ArgumentNullException("xtheme"); _xtheme = xtheme; base.Invalidate(); }