private void RemoveRandomGradientStop(RadialGradientBrush gradientBrush) { if (gradientBrush != null && gradientBrush.GradientStops.Count > 0) { gradientBrush.GradientStops.RemoveAt(_random.Next(0, gradientBrush.GradientStops.Count - 1)); } }
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); } }
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(); } } }
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(); }