public SmartCheckBox() { base.SetStyle(ControlStyles.UserPaint | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint | ControlStyles.SupportsTransparentBackColor | ControlStyles.OptimizedDoubleBuffer, true); base.AutoSize = false; state = SmartButtonState.Normal; }
public static void RenderRadioButton(Graphics g, Rectangle rect, SmartRadioButtonThemeBase xtheme, bool enable, bool selected, SmartButtonState state, string text, CheckMarkAlignment markAlign, bool drawFocus) { Rectangle rectMark, rectText; GetCheckRectAndTextRect( rect, xtheme.InnerPaddingWidth, xtheme.RadioMarkWidth, xtheme.SpaceBetweenMarkAndText, markAlign, text, xtheme.TextFont, out rectMark, out rectText); RadioMarkPainter.RenderRadioMark( g, rectMark, xtheme, enable, selected, state); System.Windows.Forms.TextRenderer.DrawText( g, text, xtheme.TextFont, rectText, enable ? xtheme.TextColor : xtheme.TextColorDisabled, TextFormatFlags.Left | TextFormatFlags.VerticalCenter); if (drawFocus) BasicBlockPainter.RenderFocusRect(g, rectText, 0); //rectMark.Width--; //rectMark.Height--; //g.DrawRectangle(Pens.Red, rectMark); //rectText.Width--; //rectText.Height--; //g.DrawRectangle(Pens.Blue, rectText); //rect.Width--; //rect.Height--; //g.DrawRectangle(Pens.Black, rect); }
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 }); } } } }
protected override void OnMouseUp(MouseEventArgs mevent) { base.OnMouseUp(mevent); if (ClientRectangle.Contains(mevent.Location)) state = SmartButtonState.Hover; else state = SmartButtonState.Normal; base.Invalidate(); }
protected override void OnMouseLeave(EventArgs eventargs) { base.OnMouseLeave(eventargs); state = SmartButtonState.Normal; }
protected override void OnMouseEnter(EventArgs eventargs) { base.OnMouseEnter(eventargs); state = SmartButtonState.Hover; }
protected override void OnMouseDown(MouseEventArgs mevent) { base.OnMouseDown(mevent); state = SmartButtonState.Pressed; base.Invalidate(); }
private void SetButtonState(Point p, SmartButtonState newState) { wlMiddleButton.State = wlSideButton2.State = wlSideButton1.State = SmartButtonState.Normal; switch (CheckLocation(p)) { case LocationResult.MiddleButton: wlMiddleButton.State = newState; break; case LocationResult.SideButton1: wlSideButton1.State = newState; break; case LocationResult.SideButton2: wlSideButton2.State = newState; break; } }
public static void RenderRadioMark(Graphics g, Rectangle rect, SmartRadioButtonThemeBase xtheme, bool enable, bool selected, SmartButtonState state) { if (rect.Width < 1 || rect.Height < 1) return; // get back-color Color backColor; if (!enable) { backColor = xtheme.RadioMarkBackColorDisabled; } else { switch (state) { case SmartButtonState.Hover: backColor = xtheme.RadioMarkBackColorHighLight; break; case SmartButtonState.Pressed: backColor = xtheme.RadioMarkBackColorPressed; break; default: backColor = xtheme.RadioMarkBackColorNormal; break; } } // get outter-circle-color Color circleColor = enable ? xtheme.OutterCircleColor : xtheme.OutterCircleColorDisabled; // get inner-spot-color Color innerColor = enable ? xtheme.InnerSpotColor : xtheme.InnerSpotColorDisabled; using (NewSmoothModeGraphics ng = new NewSmoothModeGraphics(g, SmoothingMode.AntiAlias)) { // draw background Rectangle r1 = rect; r1.Width--; r1.Height--; if (r1.Width > 0 && r1.Height > 0) { using (SolidBrush sb = new SolidBrush(backColor)) { g.FillEllipse(sb, r1); } } // draw outter circle using (Pen p = new Pen(circleColor)) { g.DrawEllipse(p, rect); } // draw high-light-outter-circle if (xtheme.HighLightOutterCircle && state == SmartButtonState.Hover) { using (Pen p = new Pen(Color.FromArgb(xtheme.OutterCircleHighLightAlpha, circleColor))) { p.Width = 3; p.Alignment = PenAlignment.Center; g.DrawEllipse(p, rect); } } // draw inner spot if (selected) { rect.Inflate(-xtheme.InnerSpotInflate, -xtheme.InnerSpotInflate); using (SolidBrush sb = new SolidBrush(innerColor)) { g.FillEllipse(sb, rect); } // draw glass on inner spot if (xtheme.ShowGlassOnInnerSpot) { GlassPainter.RenderEllipseGlass(g, rect, GlassPosition.Top, 0.2f, Color.White, 160, 20); } } } }