Пример #1
0
        public LinearGradientBrushImpl(Perspex.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;
        }
Пример #2
0
        public LinearGradientBrushImpl(
            Perspex.Media.LinearGradientBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Size destinationSize)
        {
            if (brush != null)
            {
                var gradientStops = brush.GradientStops.Select(s => new SharpDX.Direct2D1.GradientStop {
                    Color = s.Color.ToDirect2D(), Position = (float)s.Offset
                }).ToArray();

                Point startPoint = new Point(0, 0);
                Point endPoint   = new Point(0, 0);

                switch (brush.MappingMode)
                {
                case Perspex.Media.BrushMappingMode.Absolute:
                    // TODO:

                    break;

                case Perspex.Media.BrushMappingMode.RelativeToBoundingBox:
                    startPoint = new Point(brush.StartPoint.X * destinationSize.Width, brush.StartPoint.Y * destinationSize.Height);
                    endPoint   = new Point(brush.EndPoint.X * destinationSize.Width, brush.EndPoint.Y * destinationSize.Height);

                    break;
                }

                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 = target.Transform
                },
                    new SharpDX.Direct2D1.GradientStopCollection(target, gradientStops, brush.SpreadMethod.ToDirect2D())
                    );
            }
        }
Пример #3
0
        public LinearGradientBrushImpl(
            Perspex.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 = SharpDX.Matrix3x2.Identity,
                },
                    stops);
            }
        }
Пример #4
0
        public LinearGradientBrushImpl(
            Perspex.Media.LinearGradientBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Size destinationSize)
        {
            var gradientStops = brush.GradientStops.Select(s => new SharpDX.Direct2D1.GradientStop {
                Color = s.Color.ToDirect2D(), Position = (float)s.Offset
            }).ToArray();

            Point startPoint = brush.StartPoint.ToPixels(destinationSize);
            Point endPoint   = brush.EndPoint.ToPixels(destinationSize);

            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 = target.Transform
            },
                new SharpDX.Direct2D1.GradientStopCollection(target, gradientStops, brush.SpreadMethod.ToDirect2D())
                );
        }