private void RemoveRandomGradientStop(RadialGradientBrush gradientBrush)
 {
     if (gradientBrush != null && gradientBrush.GradientStops.Count > 0)
     {
         gradientBrush.GradientStops.RemoveAt(_random.Next(0, gradientBrush.GradientStops.Count - 1));
     }
 }
Ejemplo n.º 2
0
        public static WBrush ToBrush(this Brush brush)
        {
            if (brush == null)
            {
                return(null);
            }

            if (brush is SolidColorBrush solidColorBrush)
            {
                return(solidColorBrush.Color.ToBrush());
            }

            if (brush is LinearGradientBrush linearGradientBrush)
            {
                var orderedStops           = linearGradientBrush.GradientStops.OrderBy(x => x.Offset).ToList();
                var gradientStopCollection = new WGradientStopCollection();

                foreach (var item in orderedStops)
                {
                    gradientStopCollection.Add(new WGradientStop {
                        Offset = item.Offset, Color = item.Color.ToWindowsColor()
                    });
                }

                var p1 = linearGradientBrush.StartPoint;
                var p2 = linearGradientBrush.EndPoint;

                return(new WLinearGradientBrush(gradientStopCollection, 0)
                {
                    StartPoint = new WPoint(p1.X, p1.Y),
                    EndPoint = new WPoint(p2.X, p2.Y)
                });
            }

#if UWP_18362
            if (brush is RadialGradientBrush radialGradientBrush)
            {
                var wRadialGradientBrush = new WRadialGradientBrush()
                {
                    Center  = new WPoint(radialGradientBrush.Center.X, radialGradientBrush.Center.Y),
                    RadiusX = radialGradientBrush.Radius,
                    RadiusY = radialGradientBrush.Radius
                };

                var orderedStops = radialGradientBrush.GradientStops.OrderBy(x => x.Offset).ToList();

                foreach (var gradientStop in orderedStops)
                {
                    wRadialGradientBrush.GradientStops.Add(
                        new WGradientStop {
                        Color = gradientStop.Color.ToWindowsColor(), Offset = gradientStop.Offset
                    });
                }

                return(wRadialGradientBrush);
            }
#endif

            return(null);
        }
        private void ToggleMappingMode(RadialGradientBrush gradientBrush)
        {
            if (gradientBrush != null)
            {
                gradientBrush.MappingMode = ((gradientBrush.MappingMode == BrushMappingMode.RelativeToBoundingBox) ? BrushMappingMode.Absolute : BrushMappingMode.RelativeToBoundingBox);

                RandomizeCenter(gradientBrush);
                RandomizeRadius(gradientBrush);
                RandomizeGradientOrigin(gradientBrush);
            }
        }
        private void AddRandomGradientStop(RadialGradientBrush gradientBrush)
        {
            if (gradientBrush != null)
            {
                var stop = new GradientStop();
                stop.Color  = Color.FromArgb(Byte.MaxValue, (byte)_random.Next(256), (byte)_random.Next(256), (byte)_random.Next(256));
                stop.Offset = _random.NextDouble();

                gradientBrush.GradientStops.Add(stop);
            }
        }
Ejemplo n.º 5
0
        public static WBrush?CreateBrush(this RadialGradientPaint radialGradientPaint)
        {
            var brush = new WRadialGradientBrush
            {
                Center  = radialGradientPaint.Center.ToNative(),
                RadiusX = radialGradientPaint.Radius,
                RadiusY = radialGradientPaint.Radius
            };

            brush.GradientStops.AddRange(radialGradientPaint.GradientStops);

            return(brush);
        }
 private void RandomizeCenter(RadialGradientBrush gradientBrush)
 {
     if (gradientBrush != null)
     {
         if (gradientBrush.MappingMode == BrushMappingMode.Absolute)
         {
             gradientBrush.Center = new Point(_random.Next(0, 100), _random.Next(0, 100));
         }
         else
         {
             gradientBrush.Center = new Point(_random.NextDouble(), _random.NextDouble());
         }
     }
 }
 private void RandomizeGradientOrigin(RadialGradientBrush gradientBrush)
 {
     if (gradientBrush != null)
     {
         if (gradientBrush.MappingMode == BrushMappingMode.Absolute)
         {
             gradientBrush.GradientOrigin = new Point(_random.Next(0, 100), _random.Next(0, 100));
         }
         else
         {
             gradientBrush.GradientOrigin = new Point(_random.Next(-100, 100) / 100f, _random.Next(-100, 100) / 100f);
         }
     }
 }
 private void RandomizeEllipseRadius(RadialGradientBrush gradientBrush)
 {
     if (gradientBrush != null)
     {
         if (gradientBrush.MappingMode == BrushMappingMode.Absolute)
         {
             gradientBrush.EllipseRadius = new Point(_random.Next(10, 200), _random.Next(10, 200));
         }
         else
         {
             gradientBrush.EllipseRadius = new Point(_random.NextDouble(), _random.NextDouble());
         }
     }
 }
 private void RandomizeRadius(RadialGradientBrush gradientBrush)
 {
     if (gradientBrush != null)
     {
         if (gradientBrush.MappingMode == BrushMappingMode.Absolute)
         {
             gradientBrush.RadiusX = _random.Next(10, 200);
             gradientBrush.RadiusY = _random.Next(10, 200);
         }
         else
         {
             gradientBrush.RadiusX = _random.NextDouble();
             gradientBrush.RadiusY = _random.NextDouble();
         }
     }
 }
Ejemplo n.º 10
0
        private void ReplaceGradientButton_Click(object sender, RoutedEventArgs e)
        {
            DynamicGradientBrush = new RadialGradientBrush();
            DynamicGradientBrush.FallbackColor = Color.FromArgb(Byte.MaxValue, (byte)_random.Next(256), (byte)_random.Next(256), (byte)_random.Next(256));

            // Set brush before adding stops
            RectangleWithDynamicGradient.Fill = DynamicGradientBrush;

            DynamicGradientBrush.GradientStops.Clear();
            for (int i = 0; i < _random.Next(2, 5); i++)
            {
                AddRandomGradientStop(DynamicGradientBrush);
            }

            // Set brush after adding stops
            TextBlockWithDynamicGradient.Foreground = DynamicGradientBrush;

            Bindings.Update();
        }