Пример #1
0
        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)));
                }
            });
        }
Пример #2
0
        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;
        }
Пример #3
0
        /// <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);
            }
        }