private static void ConvertGradientColorStops(Compositor compositor, CompositionGradientBrush compositionBrush, GradientStopCollection gradientStops, double opacity) { compositionBrush.ColorStops.Clear(); foreach (var stop in gradientStops) { compositionBrush.ColorStops.Add(compositor.CreateColorGradientStop((float)stop.Offset, stop.Color.WithOpacity(opacity))); } }
static void OptimizeGradientBrush(CompositionGradientBrush obj) { if (obj.AnchorPoint == Vector2.Zero) { obj.AnchorPoint = null; } if (obj.CenterPoint == Vector2.Zero) { obj.CenterPoint = null; } if (obj.ExtendMode == CompositionGradientExtendMode.Clamp) { obj.ExtendMode = null; } if (obj.InterpolationSpace == CompositionColorSpace.Rgb) { obj.InterpolationSpace = null; } if (obj.MappingMode == CompositionMappingMode.Relative) { obj.MappingMode = null; } if (obj.Offset == Vector2.Zero) { obj.Offset = null; } if (obj.RotationAngleInDegrees == 0) { obj.RotationAngleInDegrees = null; } if (obj.Scale == Vector2.One) { obj.Scale = null; } if (obj.TransformMatrix == Matrix3x2.Identity) { obj.TransformMatrix = null; } }