Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }