Ejemplo n.º 1
0
        public static AM.IBrush?ToRadialGradientBrush(this TwoPointConicalGradientShader twoPointConicalGradientShader)
        {
            if (twoPointConicalGradientShader.Colors != null && twoPointConicalGradientShader.ColorPos != null)
            {
                var radialGradientBrush = new AM.RadialGradientBrush
                {
                    SpreadMethod = twoPointConicalGradientShader.Mode.ToGradientSpreadMethod()
                };

                var gradientOrigin = twoPointConicalGradientShader.Start.ToPoint();
                radialGradientBrush.GradientOrigin = new A.RelativePoint(gradientOrigin, A.RelativeUnit.Relative);

                var center = twoPointConicalGradientShader.End.ToPoint();
                radialGradientBrush.Center = new A.RelativePoint(center, A.RelativeUnit.Relative);

                // TODO: twoPointConicalGradientShader.StartRadius
                radialGradientBrush.Radius = twoPointConicalGradientShader.EndRadius;

                radialGradientBrush.GradientStops = new AM.GradientStops();

                for (int i = 0; i < twoPointConicalGradientShader.Colors.Length; i++)
                {
                    var color        = twoPointConicalGradientShader.Colors[i].ToColor();
                    var offset       = twoPointConicalGradientShader.ColorPos[i];
                    var gradientStop = new AM.GradientStop(color, offset);
                    radialGradientBrush.GradientStops.Add(gradientStop);
                }

                // TODO: radialGradientBrush.LocalMatrix

                return(radialGradientBrush);
            }

            return(null);
        }
Ejemplo n.º 2
0
        public static AM.IBrush?ToLinearGradientBrush(this LinearGradientShader linearGradientShader)
        {
            if (linearGradientShader.Colors != null && linearGradientShader.ColorPos != null)
            {
                var linearGradientBrush = new AM.LinearGradientBrush
                {
                    SpreadMethod = linearGradientShader.Mode.ToGradientSpreadMethod()
                };

                var startPoint = linearGradientShader.Start.ToPoint();
                linearGradientBrush.StartPoint = new A.RelativePoint(startPoint, A.RelativeUnit.Relative);

                var endPoint = linearGradientShader.End.ToPoint();
                linearGradientBrush.EndPoint = new A.RelativePoint(endPoint, A.RelativeUnit.Relative);

                linearGradientBrush.GradientStops = new AM.GradientStops();

                for (int i = 0; i < linearGradientShader.Colors.Length; i++)
                {
                    var color        = linearGradientShader.Colors[i].ToColor();
                    var offset       = linearGradientShader.ColorPos[i];
                    var gradientStop = new AM.GradientStop(color, offset);
                    linearGradientBrush.GradientStops.Add(gradientStop);
                }

                // TODO: linearGradientShader.LocalMatrix

                return(linearGradientBrush);
            }

            return(null);
        }