示例#1
0
        public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
        {
            byte  a      = (byte)(255 * opacity / 100);
            Color c      = this.Color;
            Color newcol = System.Windows.Media.Color.FromArgb(a, c.R, c.G, c.B);

            return(new SolidColorBrush(newcol));
        }
        public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
        {
            if (this.brush != null)
            {
                return(this.brush);
            }

            RadialGradientBrush b = new RadialGradientBrush();

            foreach (GradientStop stop in this.Stops)
            {
                b.GradientStops.Add(stop);
            }

            b.GradientOrigin = new System.Windows.Point(0.5, 0.5);
            b.Center         = new System.Windows.Point(0.5, 0.5);
            b.RadiusX        = 0.5;
            b.RadiusY        = 0.5;

            if (this.GradientUnits == SVGTags.sUserSpaceOnUse)
            {
                b.Center         = new System.Windows.Point(this.CX, this.CY);
                b.GradientOrigin = new System.Windows.Point(this.FX, this.FY);
                b.RadiusX        = this.R;
                b.RadiusY        = this.R;
                b.MappingMode    = BrushMappingMode.Absolute;
            }
            else
            {
                double scale = 1d / 100d;
                if (double.IsNaN(this.CX) == false && double.IsNaN(this.CY) == false)
                {
                    //b.GradientOrigin = new System.Windows.Point(this.CX*scale, this.CY*scale);
                    b.Center = new System.Windows.Point(this.CX /* *scale */, this.CY /* *scale */);
                }
                if (double.IsNaN(this.FX) == false && double.IsNaN(this.FY) == false)
                {
                    b.GradientOrigin = new System.Windows.Point(this.FX * scale, this.FY * scale);
                }
                if (double.IsNaN(this.R) == false)
                {
                    b.RadiusX = this.R /* *scale*/;
                    b.RadiusY = this.R /* *scale*/;
                }
                b.MappingMode = BrushMappingMode.RelativeToBoundingBox;
            }
            if (this.Transform != null)
            {
                b.Transform = this.Transform;
            }

            this.brush = b;

            return(b);
        }
            public DrawingGroup Read(Stream stream)
            {
                if (stream == null)
                {
                    return(new DrawingGroup());
                }

                var svgRender = new SVGRender(new FileSystemLoader());

                svgRender.OverrideColor = _overrideColor;

                return(svgRender.LoadDrawing(stream));
            }
            public DrawingGroup Read(Uri fileUri)
            {
                if (fileUri == null)
                {
                    return(new DrawingGroup());
                }

                var svgRender = new SVGRender(new FileSystemLoader());

                svgRender.OverrideColor = _overrideColor;

                return(svgRender.LoadDrawing(fileUri));
            }
示例#5
0
        public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
        {
            var db = new DrawingBrush()
            {
                Drawing = svgRender.LoadGroup(m_elements, null, false)
            };

            db.TileMode      = TileMode.Tile;
            db.Transform     = PatternTransform;
            db.Viewport      = new Rect(X, Y, Width / bounds.Width, Height / bounds.Height);
            db.ViewportUnits = BrushMappingMode.RelativeToBoundingBox;
            return(db);
        }
        public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
        {
            if (this.Brush != null)
            {
                return(this.Brush);
            }

            LinearGradientBrush b = new LinearGradientBrush();

            foreach (GradientStop stop in this.Stops)
            {
                b.GradientStops.Add(stop);
            }

            b.MappingMode = BrushMappingMode.RelativeToBoundingBox;
            b.StartPoint  = new System.Windows.Point(0, 0);
            b.EndPoint    = new System.Windows.Point(1, 0);

            if (this.GradientUnits == SVGTags.sUserSpaceOnUse)
            {
                Transform tr = this.Transform as Transform;
                if (tr != null)
                {
                    b.StartPoint = tr.Transform(new System.Windows.Point(this.X1, this.Y1));
                    b.EndPoint   = tr.Transform(new System.Windows.Point(this.X2, this.Y2));
                }
                else
                {
                    b.StartPoint = new System.Windows.Point(this.X1, this.Y1);
                    b.EndPoint   = new System.Windows.Point(this.X2, this.Y2);
                }
                this.Transform = null;
                b.MappingMode  = BrushMappingMode.Absolute;
            }
            else
            {
                this.Normalize();
                if (double.IsNaN(this.X1) == false)
                {
                    b.StartPoint = new System.Windows.Point(this.X1, this.Y1);
                }
                if (double.IsNaN(this.X2) == false)
                {
                    b.EndPoint = new System.Windows.Point(this.X2, this.Y2);
                }
            }

            this.Brush = b;

            return(b);
        }
示例#7
0
            public DrawingGroup Read(string filePath, DirectoryInfo workingDir)
            {
                if (string.IsNullOrWhiteSpace(filePath))
                {
                    return(new DrawingGroup());
                }

                var svgRender = new SVGRender(new FileSystemLoader());

                svgRender.OverrideColor = _overrideColor;
                svgRender.UseAnimations = true;

                var drawingGroup = svgRender.LoadDrawing(filePath);

                string xamlFilePath = IoPath.Combine(workingDir.FullName,
                                                     IoPath.GetFileNameWithoutExtension(filePath) + ".xaml");

                //svgDrawing.RenderDiagrams(drawing);
                if (drawingGroup != null)
                {
                    if (_xamlPage != null)
                    {
                        //using (MemoryStream stream = new MemoryStream())
                        using (FileStream stream = File.Create(xamlFilePath))
                        {
                            XmlWriterSettings writerSettings = new XmlWriterSettings();
                            writerSettings.Indent             = true;
                            writerSettings.OmitXmlDeclaration = true;
                            writerSettings.Encoding           = Encoding.UTF8;

                            using (XmlWriter writer = XmlWriter.Create(stream, writerSettings))
                            {
                                XamlWriter.Save(drawingGroup, writer);
                            }

                            if (stream.Length > 0)
                            {
                                stream.Position = 0;
                            }

                            _xamlPage.LoadDocument(stream);
                        }
                    }
                }

                return(drawingGroup);
            }
示例#8
0
        private void CreateImages(int count)
        {
            for (int i = 0; i < count; i++)
            {
                var svgRender = new SVGRender();
                var image     = svgRender.LoadDrawing("ImagePerformanceDemo/Resources/timer.svg");

                Container.Children.Add(new SVGImage
                {
                    ImageSource         = image,
                    SizeType            = SVGImage.eSizeType.SizeToContent,
                    Width               = 100,
                    Height              = 100,
                    HorizontalAlignment = HorizontalAlignment.Center,
                    VerticalAlignment   = VerticalAlignment.Center
                });
            }
        }
示例#9
0
        public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
        {
            if (Brush != null)
            {
                return(Brush);
            }
            foreach (var server in m_pattternPaintServers)
            {
                svgRender.SVG.PaintServers.AddServer(server.Key, server.Value);
            }

            var db = new DrawingBrush()
            {
                Drawing = svgRender.LoadGroup(m_elements, null, false)
            };

            db.TileMode      = TileMode.Tile;
            db.Transform     = PatternTransform;
            db.Viewport      = new Rect(X, Y, Width / bounds.Width, Height / bounds.Height);
            db.ViewportUnits = BrushMappingMode.RelativeToBoundingBox;
            Brush            = db;
            return(db);
        }
示例#10
0
 public override Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
 {
     return(null);
 }
示例#11
0
 public virtual Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds)
 {
     return(Brush);
 }
示例#12
0
 public abstract Brush GetBrush(double opacity, SVG svg, SVGRender svgRender, Rect bounds);