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)); } }
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)); } }
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; }