示例#1
0
        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;
            }
        }