public override void Draw(Graphics g, float scale = 1.0f)
        {
            RectangleF _scaledDimension = new RectangleF(_dimension.X * scale, _dimension.Y * scale, _dimension.Width * scale, _dimension.Height * scale);

            EffectBrush _newbrush = new EffectBrush(_gradientBrush);

            _newbrush.start  = new PointF(0.0f, 0.0f);
            _newbrush.end    = new PointF(1.0f, 1.0f);
            _newbrush.center = new PointF(0.5f, 0.5f);

            SortedDictionary <float, System.Drawing.Color> newColorGradients = new SortedDictionary <float, System.Drawing.Color>();
            ColorSpectrum spectrum = _newbrush.GetColorSpectrum();
            var           colors   = _newbrush.colorGradients;

            float _cutOffPoint = _width / _radius;

            if (_cutOffPoint < 1.0f)
            {
                _cutOffPoint = 1.0f - _cutOffPoint;

                foreach (var kvp in spectrum.GetSpectrumColors())
                {
                    newColorGradients.Add((1 - _cutOffPoint) * kvp.Key + _cutOffPoint, kvp.Value);
                }

                newColorGradients.Add(_cutOffPoint - 0.0001f, Color.Transparent);
                newColorGradients.Add(0.0f, Color.Transparent);

                _newbrush.colorGradients = newColorGradients;
            }
            else if (_cutOffPoint > 1.0f)
            {
                foreach (var kvp in spectrum.GetSpectrumColors())
                {
                    if (kvp.Key >= (1 - 1 / _cutOffPoint))
                    {
                        newColorGradients.Add((1 - 1 / _cutOffPoint) * kvp.Key + _cutOffPoint, kvp.Value);
                    }
                }

                newColorGradients.Add(0.0f, spectrum.GetColorAt((1 - 1 / _cutOffPoint)));
            }

            _newbrush.SetBrushType(EffectBrush.BrushType.Radial);
            Brush brush = _newbrush.GetDrawingBrush();

            if (brush is PathGradientBrush)
            {
                (brush as PathGradientBrush).TranslateTransform(_scaledDimension.X, _scaledDimension.Y);
                (brush as PathGradientBrush).ScaleTransform(_scaledDimension.Width - (2.0f), _scaledDimension.Height - (2.0f));

                Matrix rotationMatrix = new Matrix();
                rotationMatrix.RotateAt(-_angle, new PointF(_center.X * scale, _center.Y * scale), MatrixOrder.Append);

                Matrix originalMatrix = g.Transform;
                g.Transform = rotationMatrix;
                g.FillEllipse(brush, _scaledDimension);
                g.Transform = originalMatrix;
            }
        }
        private Brush GetBrush(float value, float position, float max_position)
        {
            if (Properties.ViewType == EqualizerPresentationType.AlternatingColor)
            {
                if (value >= 0)
                {
                    return(new SolidBrush(Properties.PrimaryColor));
                }
                else
                {
                    return(new SolidBrush(Properties.SecondaryColor));
                }
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientNotched)
            {
                return(new SolidBrush(Properties.Gradient.GetColorSpectrum().GetColorAt(position, max_position)));
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientHorizontal)
            {
                EffectBrush e_brush = new EffectBrush(Properties.Gradient.GetColorSpectrum())
                {
                    start = PointF.Empty,
                    end   = new PointF(sourceRect.Width, 0)
                };

                return(e_brush.GetDrawingBrush());
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientColorShift)
            {
                return(new SolidBrush(Properties.Gradient.GetColorSpectrum().GetColorAt(Utils.Time.GetMilliSeconds(), 1000)));
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientVertical)
            {
                EffectBrush e_brush = new EffectBrush(Properties.Gradient.GetColorSpectrum())
                {
                    start = new PointF(0, sourceRect.Height),
                    end   = PointF.Empty
                };

                return(e_brush.GetDrawingBrush());
            }
            else
            {
                return(new SolidBrush(Properties.PrimaryColor));
            }
        }
示例#3
0
        private Brush GetBrush(float value, float position, float max_position)
        {
            var rect = Properties.Sequence.GetAffectedRegion();

            if (Properties.ViewType == EqualizerPresentationType.AlternatingColor)
            {
                if (value >= 0)
                {
                    return(new SolidBrush(Properties.PrimaryColor));
                }
                else
                {
                    return(new SolidBrush(Properties.SecondaryColor));
                }
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientNotched)
            {
                return(new SolidBrush(Properties.Gradient.GetColorSpectrum().GetColorAt(position, max_position)));
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientHorizontal)
            {
                EffectBrush e_brush = new EffectBrush(Properties.Gradient.GetColorSpectrum());
                e_brush.start = new PointF(rect.X, 0);
                e_brush.end   = new PointF(rect.Width + rect.X, 0);

                return(e_brush.GetDrawingBrush());
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientColorShift)
            {
                return(new SolidBrush(Properties.Gradient.GetColorSpectrum().GetColorAt(Utils.Time.GetMilliSeconds(), 1000)));
            }
            else if (Properties.ViewType == EqualizerPresentationType.GradientVertical)
            {
                EffectBrush e_brush = new EffectBrush(Properties.Gradient.GetColorSpectrum());
                e_brush.start = new PointF(0, rect.Height + rect.Y);
                e_brush.end   = new PointF(0, rect.Y);

                return(e_brush.GetDrawingBrush());
            }
            else
            {
                return(new SolidBrush(Properties.PrimaryColor));
            }
        }
示例#4
0
        public override void Draw(Graphics g, float scale = 1.0f)
        {
            RectangleF _scaledDimension = new RectangleF(_dimension.X * scale, _dimension.Y * scale, _dimension.Width * scale, _dimension.Height * scale);

            PointF rotatePoint = new PointF(_scaledDimension.X + (_scaledDimension.Width / 2.0f), _scaledDimension.Y + (_scaledDimension.Height / 2.0f));

            EffectBrush _newbrush = new EffectBrush(_gradientBrush);

            _newbrush.start = new PointF(_newbrush.start.X * scale, _newbrush.start.Y * scale);
            _newbrush.end   = new PointF(_newbrush.end.X * scale, _newbrush.end.Y * scale);

            Matrix rotationMatrix = new Matrix();

            rotationMatrix.RotateAt(-_angle, rotatePoint, MatrixOrder.Append);

            Matrix originalMatrix = g.Transform;

            g.Transform = rotationMatrix;
            g.FillRectangle(_newbrush.GetDrawingBrush(), _scaledDimension);
            g.Transform = originalMatrix;
        }