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