void Gradient_Generate(List <Fade.FadeInfo> points) { if (Program.Project.IsDisposing) { return; } fullFade = points; LinearGradientBrush gradient = (LinearGradientBrush)Gradient.Fill; Dispatcher.UIThread.InvokeAsync(() => { gradient.GradientStops.Clear(); if (_fade == null) { return; } for (int i = 0; i < points.Count; i++) { if (i > 0 && points[i - 1].IsHold) { gradient.GradientStops.Add(new GradientStop(points[i - 1].Color.ToAvaloniaColor(), (points[i].Time - .0000000001) / (_fade.Time * _fade.Gate))); } gradient.GradientStops.Add(new GradientStop(points[i].Color.ToAvaloniaColor(), points[i].Time / (_fade.Time * _fade.Gate))); } }); }
public LinearGradientBrushImpl(Avalonia.Media.LinearGradientBrush brush, Size destinationSize) { var start = brush.StartPoint.ToPixels(destinationSize); var end = brush.EndPoint.ToPixels(destinationSize); this.PlatformBrush = new LinearGradient(start.X, start.Y, end.X, end.Y); foreach (var stop in brush.GradientStops) { ((LinearGradient)this.PlatformBrush).AddColorStop(stop.Offset, stop.Color.ToCairo()); } ((LinearGradient)this.PlatformBrush).Extend = Extend.Pad; }
/// <summary> /// Initializes a new instance of the <see cref="LinearGradientBrushImpl"/> class. /// </summary> /// <param name="brush"></param> /// <param name="target"></param> /// <param name="destinationSize"></param> public LinearGradientBrushImpl( Avalonia.Media.LinearGradientBrush brush, SharpDX.Direct2D1.RenderTarget target, Size destinationSize) { if (brush.GradientStops.Count == 0) { return; } var gradientStops = brush.GradientStops.Select(s => new SharpDX.Direct2D1.GradientStop { Color = s.Color.ToDirect2D(), Position = (float)s.Offset }).ToArray(); var startPoint = brush.StartPoint.ToPixels(destinationSize); var endPoint = brush.EndPoint.ToPixels(destinationSize); using (var stops = new SharpDX.Direct2D1.GradientStopCollection( target, gradientStops, brush.SpreadMethod.ToDirect2D())) { PlatformBrush = new SharpDX.Direct2D1.LinearGradientBrush( target, new SharpDX.Direct2D1.LinearGradientBrushProperties { StartPoint = startPoint.ToSharpDX(), EndPoint = endPoint.ToSharpDX() }, new SharpDX.Direct2D1.BrushProperties { Opacity = (float)brush.Opacity, Transform = PrimitiveExtensions.Matrix3x2Identity, }, stops); } }