コード例 #1
0
ファイル: SvgRenderer.cs プロジェクト: aalmada/bonsai
        void CreateLinearGradient(SvgElement element, SvgRendererContext context)
        {
            var linearGradient = element as SvgLinearGradientElement;

            if (linearGradient != null)
            {
                var color1 = default(Color);
                var color2 = default(Color);
                LinearGradientBrush gradient;
                if (linearGradient.Children.Count == 2)
                {
                    var stop1 = linearGradient.Children[0] as SvgStopElement;
                    var stop2 = linearGradient.Children[1] as SvgStopElement;
                    if (stop1 != null && stop2 != null)
                    {
                        color1 = ParseStopColor(stop1);
                        color2 = ParseStopColor(stop2);
                    }
                }
                else
                {
                    Brush referenceGradient;
                    LinearGradientBrush referenceLinearGradient;
                    var href = new SvgXRef(linearGradient).Href;
                    if (href != null && context.Gradients.TryGetValue(href, out referenceGradient) &&
                        (referenceLinearGradient = referenceGradient as LinearGradientBrush) != null)
                    {
                        color1 = referenceLinearGradient.LinearColors[0];
                        color2 = referenceLinearGradient.LinearColors[1];
                    }
                }

                var gradientTransform = ParseTransform(linearGradient, null, "gradientTransform");
                var points            = new[]
                {
                    ParsePoint(linearGradient, "x1", "y1").GetValueOrDefault(PointF.Empty),
                    ParsePoint(linearGradient, "x2", "y2").GetValueOrDefault(new PointF(1, 1))
                };
                if (gradientTransform != null)
                {
                    gradientTransform.TransformPoints(points);
                }
                gradient = new LinearGradientBrush(points[0], points[1], color1, color2);
                context.Gradients.Add(new SvgUriReference(linearGradient).Href, gradient);
                disposableResources.Add(gradient);
            }
        }
コード例 #2
0
 public SvgImageElement(SvgXRef xref) => XRef = xref;
コード例 #3
0
 public SvgUseElement(SvgLength x, SvgLength y, SvgXRef xref)
 {
     XRef = xref;
     X    = x;
     Y    = y;
 }
コード例 #4
0
 public SvgUseElement(SvgXRef xref)
 {
     XRef = xref;
 }
コード例 #5
0
 public SvgImageElement(SvgLength x, SvgLength y, SvgXRef xref)
 {
     this.XRef = xref;
     this.X    = x;
     this.Y    = y;
 }
コード例 #6
0
 public SvgImageElement(SvgXRef xref)
 {
     this.XRef = xref;
 }
コード例 #7
0
 public SvgUseElement(SvgXRef xref)
 {
     this.XRef = xref;
 }