Ejemplo n.º 1
0
        private static XElementBuilder BuildLinearGradientElement(LinearGradient gradient)
        {
            var startPositionPreTranslate = Coordinate.Cartesian(-50, 0).Rotate(gradient.Angle);
            var endPositionPreTranslate   = Coordinate.Cartesian(-50, 0).Rotate(gradient.Angle.Plus(Angle.FromRotations(0.5M)));

            var startPosition = startPositionPreTranslate.Translate(new Vector(50, 50));
            var endPosition   = endPositionPreTranslate.Translate(new Vector(50, 50));

            var startPercentX = startPosition.X.ToString() + "%";
            var startPercentY = 100 - startPosition.Y + "%";

            var endPercentX = endPosition.X.ToString() + "%";
            var endPercentY = 100 - endPosition.Y + "%";

            return
                (XElementBuilder.WithName("linearGradient").Add(
                     new XAttribute("x1", startPercentX),
                     new XAttribute("y1", startPercentY),
                     new XAttribute("x2", endPercentX),
                     new XAttribute("y2", endPercentY)
                     )
                 .Add(
                     new XElement("stop",
                                  new XAttribute("offset", "0%"),
                                  new XAttribute("style", $"stop-color:{SvgColor( gradient.Start )};stop-opacity:{SvgOpacity( gradient.Start )}")),
                     new XElement("stop",
                                  new XAttribute("offset", "100%"),
                                  new XAttribute("style", $"stop-color:{SvgColor( gradient.End )};stop-opacity:{SvgOpacity( gradient.End )}"))));
        }