protected override void OnPaint(PaintEventArgs pevent) { base.OnPaint(pevent); var G = pevent.Graphics; G.SmoothingMode = SmoothingMode.AntiAlias; Color bColor; if (Enabled) { if (animationManager.IsAnimating()) { if (Checked) { bColor = DrawHelper.BlendColor(MaterialSkinManager.GetCheckboxOffColor(), MaterialSkinManager.ColorScheme.AccentColor, animationManager.GetProgress() * 255); } else { bColor = DrawHelper.BlendColor(MaterialSkinManager.ColorScheme.AccentColor, MaterialSkinManager.GetCheckboxOffColor(), 255 - animationManager.GetProgress() * 255); } } else { if (Checked) { bColor = MaterialSkinManager.ColorScheme.AccentColor; } else { bColor = MaterialSkinManager.GetCheckboxOffColor(); } } } else { bColor = MaterialSkinManager.GetCheckBoxOffDisabledColor(); } Color aColor; if (Enabled) { if (animationManager.IsAnimating()) { if (Checked) { aColor = DrawHelper.BlendColor(MaterialSkinManager.ColorScheme.LightPrimaryColor, MaterialSkinManager.ColorScheme.PrimaryColor, animationManager.GetProgress() * 255); } else { aColor = DrawHelper.BlendColor(MaterialSkinManager.ColorScheme.PrimaryColor, MaterialSkinManager.ColorScheme.LightPrimaryColor, 255 - animationManager.GetProgress() * 255); } } else { if (Checked) { aColor = MaterialSkinManager.ColorScheme.PrimaryColor; } else { aColor = MaterialSkinManager.ColorScheme.LightPrimaryColor; } } } else { aColor = MaterialSkinManager.GetCheckBoxOffDisabledColor(); } G.FillPath(new SolidBrush(Color.FromArgb(115, bColor)), RoundedRectangle); G.DrawPath(new Pen(Color.FromArgb(50, bColor)), RoundedRectangle); // draw ripple animation if (Ripple && rippleAnimationManager.IsAnimating()) { for (int i = 0; i < rippleAnimationManager.GetAnimationCount(); i++) { var animationValue = rippleAnimationManager.GetProgress(i); int colorAlpha = Enabled ? (int)(animationValue * 255.0) : MaterialSkinManager.GetCheckBoxOffDisabledColor().A; var brush = new SolidBrush(Color.FromArgb(colorAlpha, Enabled ? MaterialSkinManager.ColorScheme.AccentColor : MaterialSkinManager.GetCheckBoxOffDisabledColor())); var animationSource = new Point((int)(23f + 20f * (float)animationManager.GetProgress()), Height / 2); var rippleBrush = new SolidBrush(Color.FromArgb((int)((animationValue * 40)), ((bool)rippleAnimationManager.GetData(i)[0]) ? Color.Black : brush.Color)); var rippleHeight = (Height % 2 == 0) ? Height - 3 : Height - 2; var rippleSize = (rippleAnimationManager.GetDirection(i) == AnimationDirection.InOutIn) ? (int)(rippleHeight * (0.8d + (0.2d * animationValue))) : rippleHeight; using (var path = DrawHelper.CreateRoundRect(animationSource.X - rippleSize / 2, animationSource.Y - rippleSize / 2, rippleSize, rippleSize, rippleSize / 2)) { G.FillPath(rippleBrush, path); } rippleBrush.Dispose(); } } G.FillEllipse(new SolidBrush(aColor), 14f + 20f * (float)animationManager.GetProgress(), Height / 2 - 9, 18, 18); G.DrawEllipse(new Pen(aColor), 14f + 20f * (float)animationManager.GetProgress(), Height / 2 - 9, 18, 18); if (!DesignMode && Controls.Count > 0) { this.DrawChildShadow(G); } }
protected override void OnPaint(PaintEventArgs pevent) { base.OnPaint(pevent); var g = pevent.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; g.TextRenderingHint = TextRenderingHint.AntiAlias; var RADIOBUTTON_CENTER = boxOffset + RADIOBUTTON_SIZE_HALF; var animationProgress = animationManager.GetProgress(); int colorAlpha = Enabled ? (int)(animationProgress * 255.0) : MaterialSkinManager.GetCheckBoxOffDisabledColor().A; int backgroundAlpha = Enabled ? (int)(MaterialSkinManager.GetCheckboxOffColor().A *(1.0 - animationProgress)) : MaterialSkinManager.GetCheckBoxOffDisabledColor().A; float animationSize = (float)(animationProgress * 8f); float animationSizeHalf = animationSize / 2; animationSize = (float)(animationProgress * 9f); var brush = new SolidBrush(Color.FromArgb(colorAlpha, Enabled ? MaterialSkinManager.ColorScheme.AccentColor : MaterialSkinManager.GetCheckBoxOffDisabledColor())); var pen = new Pen(brush.Color); // draw ripple animation if (Ripple && rippleAnimationManager.IsAnimating()) { for (int i = 0; i < rippleAnimationManager.GetAnimationCount(); i++) { var animationValue = rippleAnimationManager.GetProgress(i); var animationSource = new Point(RADIOBUTTON_CENTER, RADIOBUTTON_CENTER); var rippleBrush = new SolidBrush(Color.FromArgb((int)((animationValue * 40)), ((bool)rippleAnimationManager.GetData(i)[0]) ? Color.Black : brush.Color)); var rippleHeight = (Height % 2 == 0) ? Height - 3 : Height - 2; var rippleSize = (rippleAnimationManager.GetDirection(i) == AnimationDirection.InOutIn) ? (int)(rippleHeight * (0.8d + (0.2d * animationValue))) : rippleHeight; using (var path = DrawHelper.CreateRoundRect(animationSource.X - rippleSize / 2, animationSource.Y - rippleSize / 2, rippleSize, rippleSize, rippleSize / 2)) { g.FillPath(rippleBrush, path); } rippleBrush.Dispose(); } } // draw radiobutton circle Color uncheckedColor = DrawHelper.BlendColor(Parent.BackColor, Enabled ? MaterialSkinManager.GetCheckboxOffColor() : MaterialSkinManager.GetCheckBoxOffDisabledColor(), backgroundAlpha); using (var path = DrawHelper.CreateRoundRect(boxOffset, boxOffset, RADIOBUTTON_SIZE, RADIOBUTTON_SIZE, 9f)) { g.FillPath(new SolidBrush(uncheckedColor), path); if (Enabled) { g.FillPath(brush, path); } } g.FillEllipse( new SolidBrush(Parent.BackColor), RADIOBUTTON_OUTER_CIRCLE_WIDTH + boxOffset, RADIOBUTTON_OUTER_CIRCLE_WIDTH + boxOffset, RADIOBUTTON_INNER_CIRCLE_SIZE, RADIOBUTTON_INNER_CIRCLE_SIZE); if (Checked) { using (var path = DrawHelper.CreateRoundRect(RADIOBUTTON_CENTER - animationSizeHalf, RADIOBUTTON_CENTER - animationSizeHalf, animationSize, animationSize, 4f)) { g.FillPath(brush, path); } } SizeF stringSize = g.MeasureString(Text, MaterialSkinManager.ROBOTO_MEDIUM_10); g.DrawString(Text, MaterialSkinManager.ROBOTO_MEDIUM_10, Enabled ? MaterialSkinManager.GetPrimaryTextBrush() : MaterialSkinManager.GetDisabledOrHintBrush(), boxOffset + 22, Height / 2 - stringSize.Height / 2); brush.Dispose(); pen.Dispose(); if (!DesignMode && Controls.Count > 0) { this.DrawChildShadow(g); } }
protected override void OnPaint(PaintEventArgs pevent) { base.OnPaint(pevent); var g = pevent.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; g.TextRenderingHint = TextRenderingHint.AntiAlias; var CHECKBOX_CENTER = boxOffset + CHECKBOX_SIZE_HALF - 1; double animationProgress = animationManager.GetProgress(); int colorAlpha = Enabled ? (int)(animationProgress * 255.0) : MaterialSkinManager.GetCheckBoxOffDisabledColor().A; int backgroundAlpha = Enabled ? (int)(MaterialSkinManager.GetCheckboxOffColor().A *(1.0 - animationProgress)) : MaterialSkinManager.GetCheckBoxOffDisabledColor().A; var brush = new SolidBrush(Color.FromArgb(colorAlpha, Enabled ? MaterialSkinManager.ColorScheme.AccentColor : MaterialSkinManager.GetCheckBoxOffDisabledColor())); var brush3 = new SolidBrush(Enabled ? MaterialSkinManager.ColorScheme.AccentColor : MaterialSkinManager.GetCheckBoxOffDisabledColor()); var pen = new Pen(brush.Color); // draw ripple animation if (Ripple && rippleAnimationManager.IsAnimating()) { for (int i = 0; i < rippleAnimationManager.GetAnimationCount(); i++) { var animationValue = rippleAnimationManager.GetProgress(i); var animationSource = new Point(CHECKBOX_CENTER, CHECKBOX_CENTER); var rippleBrush = new SolidBrush(Color.FromArgb((int)((animationValue * 40)), ((bool)rippleAnimationManager.GetData(i)[0]) ? Color.Black : brush.Color)); var rippleHeight = (Height % 2 == 0) ? Height - 3 : Height - 2; var rippleSize = (rippleAnimationManager.GetDirection(i) == AnimationDirection.InOutIn) ? (int)(rippleHeight * (0.8d + (0.2d * animationValue))) : rippleHeight; using (var path = DrawHelper.CreateRoundRect(animationSource.X - rippleSize / 2, animationSource.Y - rippleSize / 2, rippleSize, rippleSize, rippleSize / 2)) { g.FillPath(rippleBrush, path); } rippleBrush.Dispose(); } } brush3.Dispose(); var checkMarkLineFill = new Rectangle(boxOffset, boxOffset, (int)(17.0 * animationProgress), 17); using (var checkmarkPath = DrawHelper.CreateRoundRect(boxOffset, boxOffset, 17, 17, 1f)) { SolidBrush brush2 = new SolidBrush(DrawHelper.BlendColor(Parent.BackColor, Enabled ? MaterialSkinManager.GetCheckboxOffColor() : MaterialSkinManager.GetCheckBoxOffDisabledColor(), backgroundAlpha)); Pen pen2 = new Pen(brush2.Color); g.FillPath(brush2, checkmarkPath); g.DrawPath(pen2, checkmarkPath); g.FillRectangle(new SolidBrush(Parent.BackColor), boxOffset + 2, boxOffset + 2, CHECKBOX_INNER_BOX_SIZE - 1, CHECKBOX_INNER_BOX_SIZE - 1); g.DrawRectangle(new Pen(Parent.BackColor), boxOffset + 2, boxOffset + 2, CHECKBOX_INNER_BOX_SIZE - 1, CHECKBOX_INNER_BOX_SIZE - 1); brush2.Dispose(); pen2.Dispose(); if (Enabled) { g.FillPath(brush, checkmarkPath); g.DrawPath(pen, checkmarkPath); } else if (Checked) { g.SmoothingMode = SmoothingMode.None; g.FillRectangle(brush, boxOffset + 2, boxOffset + 2, CHECKBOX_INNER_BOX_SIZE, CHECKBOX_INNER_BOX_SIZE); g.SmoothingMode = SmoothingMode.AntiAlias; } g.DrawImageUnscaledAndClipped(DrawCheckMarkBitmap(), checkMarkLineFill); } // draw checkbox text SizeF stringSize = g.MeasureString(Text, MaterialSkinManager.ROBOTO_MEDIUM_10); g.DrawString( Text, MaterialSkinManager.ROBOTO_MEDIUM_10, Enabled ? MaterialSkinManager.GetPrimaryTextBrush() : MaterialSkinManager.GetDisabledOrHintBrush(), boxOffset + TEXT_OFFSET, Height / 2 - stringSize.Height / 2); // dispose used paint objects pen.Dispose(); brush.Dispose(); if (!DesignMode && Controls.Count > 0) { this.DrawChildShadow(g); } }