Provides functionality to export plots to scalable vector graphics using text measuring in WPF.
Наследование: OxyPlot.SvgExporter
Пример #1
0
        void Copy_OnExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            var data = new DataObject();

            using (var ms = new MemoryStream())
            {
                var pngExporter = new PngExporter();
                pngExporter.Export(plot.Model, ms);

                var bitmap = new BitmapImage();
                bitmap.BeginInit();
                bitmap.StreamSource = ms;
                bitmap.CacheOption  = BitmapCacheOption.OnLoad;
                bitmap.EndInit();
                bitmap.Freeze();

                data.SetImage(bitmap);
            }

            var svg         = new MemoryStream();
            var svgExporter = new SvgExporter();

            svgExporter.Export(plot.Model, svg);
            svg.Position = 0;
            data.SetData("image/svg+xml", svg);

            Clipboard.SetDataObject(data);
            e.Handled = true;
        }
Пример #2
0
        async Task Export()
        {
            message.Text = "Saving";
            var dialog = new SaveFileDialog();

            dialog.OverwritePrompt = true;
            dialog.Filter          = "PNG Files|*.png|SVG Files|*.svg";
            dialog.AddExtension    = true;
            if (dialog.ShowDialog(this) == true)
            {
                using (var fs = dialog.OpenFile())
                {
                    if (dialog.FileName.EndsWith(".svg", StringComparison.InvariantCultureIgnoreCase))
                    {
                        var exporter = new SvgExporter();
                        exporter.Export(plot.Model, fs);
                    }
                    else
                    {
                        var exporter = new PngExporter();
                        exporter.Export(plot.Model, fs);
                    }
                    fs.SetLength(fs.Position);
                }
            }
        }
Пример #3
0
        public void Export(string outputFolder, ref Dictionary <string, string> outputFiles)
        {
            string baseFilename = outputFolder + "/" + Herd.Utils.RemoveSpecialCharacters(name);

            //1st save in common formats: png and svg
            string fileName;

            //as png
            fileName = baseFilename + ".png";
            var pngExporter = new PngExporter {
                Width = 600, Height = 400, Background = OxyColors.Transparent
            };

            pngExporter.ExportToFile(Plot, fileName);
            //as svg
            fileName = baseFilename + ".svg";
            var svgExporter = new OxyPlot.Wpf.SvgExporter {
                Width = 600, Height = 400
            };

            svgExporter.ExportToFile(Plot, fileName);

            //2nd save data from the model for importing
            fileName = baseFilename + Herd.Files.Extensions.PlotDataExtension;

            using (TextWriter writer = File.CreateText(fileName))
            {
                writer.WriteLine("<" + XMLTags.PlotNodeTag + " "
                                 + XMLTags.nameAttribute + "=\"" + Herd.Utils.RemoveSpecialCharacters(name) + "\">");
                foreach (OxyPlot.Series.LineSeries lineSeries in Plot.Series)
                {
                    writer.WriteLine("  <" + XMLTags.LineSeriesTag + " " + XMLTags.nameAttribute + "=\"" + lineSeries.Title + "\">");

                    foreach (DataPoint dataPoint in lineSeries.Points)
                    {
                        writer.WriteLine("    <" + XMLTags.DataPointTag + ">");
                        writer.WriteLine("      <" + XMLTags.DataPointXTag + ">" + dataPoint.X + "</" + XMLTags.DataPointXTag + ">");
                        writer.WriteLine("      <" + XMLTags.DataPointYTag + ">" + dataPoint.Y + "</" + XMLTags.DataPointYTag + ">");
                        writer.WriteLine("    </" + XMLTags.DataPointTag + ">");
                    }

                    writer.WriteLine("  </" + XMLTags.LineSeriesTag + ">");
                }
                writer.WriteLine("</" + XMLTags.PlotNodeTag + ">");

                string relPlotFilename = Herd.Utils.RemoveSpecialCharacters(name) + Herd.Files.Extensions.PlotDataExtension;
                outputFiles[relPlotFilename] = XMLTags.PlotNodeTag;
            }
        }
Пример #4
0
        public override void export(string outputFolder)
        {
            string fileName;

            //as png
            fileName = outputFolder + "/" + name + ".png";
            var pngExporter = new PngExporter {
                Width = 600, Height = 400, Background = OxyColors.Transparent
            };

            pngExporter.ExportToFile(m_plot, fileName);
            //as svg
            fileName = outputFolder + "/" + name + ".svg";
            var svgExporter = new OxyPlot.Wpf.SvgExporter {
                Width = 600, Height = 400
            };

            svgExporter.ExportToFile(m_plot, fileName);
        }
        /// <summary>
        /// The plot diagram.
        /// </summary>
        /// <param name="fileLocation">
        /// The png location.
        /// </param>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        private void PlotDiagram(string fileLocation, PlotModel model, int width, int height)
        {
            string extension = Path.GetExtension(fileLocation);
            if (extension == null)
            {
                throw new FileFormatException("Please specify file extension of the result picture file.");
            }
            else if (extension.ToLower() == ".svg")
            {
                using (var stream = File.Create(fileLocation))
                {
                    var exporter = new SvgExporter() { Width = width, Height = height};
                    exporter.Export(model, stream);
                }
            }
            else if (extension.ToLower() == ".png")
            {
                using (Stream stream = File.Create(fileLocation))
                {
                    PngExporter.Export(model, stream, width * 4, height * 4 , OxyColors.Transparent, 300);
                }

                // int resolution = 300;
                // RenderTargetBitmap image = new RenderTargetBitmap(width, height, resolution, resolution, PixelFormats.Pbgra32);
                // DrawingVisual drawVisual = new DrawingVisual();
                // DrawingContext drawContext = drawVisual.RenderOpen();
                //
                // // Output the graph models to a context
                // var oe = PngExporter.ExportToBitmap(model, width, height, OxyColors.White);
                // drawContext.DrawImage(oe, new Rect(0, 0, width, height));
                //
                // drawContext.Close();
                // image.Render(drawVisual);
                //
                // PngBitmapEncoder png = new PngBitmapEncoder();
                // png.Frames.Add(BitmapFrame.Create(image));
                // using (Stream stream = File.Create(fileLocation))
                // {
                //     png.Save(stream);
                // }
            }
            else
            {
                throw new FormatException(string.Format("Does not support plotting for picture format {0}.", extension));
            }
        }
Пример #6
-1
 public void export(string outputFolder)
 {
     string fileName;
     //as png
     fileName = outputFolder + "/" + name + ".png";
     var pngExporter = new PngExporter { Width = 600, Height = 400, Background = OxyColors.Transparent };
     pngExporter.ExportToFile(m_plot, fileName);
     //as svg
     fileName = outputFolder + "/" + name + ".svg";
     var svgExporter = new OxyPlot.Wpf.SvgExporter { Width = 600, Height = 400 };
     svgExporter.ExportToFile(m_plot, fileName);
 }