コード例 #1
0
        private void SaveGraphButton_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog()
            {
                Filter           = "Portable Network Graphics (*.png)|*.png|Portable Document Format (*.pdf)|*.pdf|Scalable Vector Graphics (*.svg)|*.svg",
                RestoreDirectory = true
            };

            if (dlg.ShowDialog() == true)
            {
                if (File.Exists(dlg.FileName))
                {
                    try
                    {
                        File.Delete(dlg.FileName);
                    }
                    catch (IOException)
                    {
                        MessageBox.Show("Cannot access the file " + dlg.FileName + " because it is being used by another process.",
                                        Application.Current.MainWindow.Title, MessageBoxButton.OK, MessageBoxImage.Warning);
                    }
                }

                switch (dlg.FileName.Substring(dlg.FileName.LastIndexOf('.')))
                {
                case ".png":
                    PngExporter pngExporter = new PngExporter();

                    using (FileStream fileStream = File.OpenWrite(dlg.FileName))
                    {
                        pngExporter.Export(MainPlotView.Model, fileStream);
                    }

                    break;

                case ".pdf":
                    PdfExporter pdfExporter = new PdfExporter();

                    using (FileStream fileStream = File.OpenWrite(dlg.FileName))
                    {
                        pdfExporter.Export(MainPlotView.Model, fileStream);
                    }

                    break;

                case ".svg":
                    OxyPlot.SvgExporter svgExporter = new OxyPlot.SvgExporter();

                    using (FileStream fileStream = File.OpenWrite(dlg.FileName))
                    {
                        svgExporter.Export(MainPlotView.Model, fileStream);
                    }

                    break;

                default:
                    break;
                }
            }
        }
コード例 #2
0
        public void CopySvg()
        {
            var rc  = new ShapesRenderContext(null);
            var svg = SvgExporter.ExportToString(this.Model, this.Plot.ActualWidth, this.Plot.ActualHeight, true, rc);

            Clipboard.SetText(svg);
        }
コード例 #3
0
 /// <summary>
 /// Saves the graph as an .svg
 /// </summary>
 /// <param name="fileName"></param>
 private void SaveAsSVG(string fileName)
 {
     using (var stream = File.Create(fileName))
     {
         OxyPlot.SvgExporter exporter = new OxyPlot.SvgExporter {
             Width = 600, Height = 400
         };
         exporter.Export(Model, stream);
     }
 }
コード例 #4
0
        public static string ExportToSvgString(PlotModel model, double width, double height, bool isDocument)
        {
            var ex = new OxyPlot.SvgExporter()
            {
                Width      = width,
                Height     = height,
                IsDocument = isDocument
            };

            var svg = ex.ExportToString(model);

            return(isDocument ? svg : RemoveHtmlHeaderFromSvg(svg));
        }
コード例 #5
0
 public static void Show(string wndTitlle, PlotModel model)
 {
     // export using the instance methods
     using (var stream = new MemoryStream())
     {
         var strPath      = $"{Guid.NewGuid().ToString()}.svg";
         var strFull      = Path.Combine(Directory.GetCurrentDirectory(), strPath);
         var jpegExporter = new OxyPlot.SvgExporter();
         jpegExporter.Export(model, stream);
         System.IO.File.WriteAllBytes(strFull, stream.ToArray());
         Process.Start(@"cmd.exe ", @"/c " + strFull);
     }
 }
コード例 #6
0
        private static void Export([NotNull] PlotModel pm, [NotNull] string fullFileName, ExportType exportType)
        {
            if (exportType == ExportType.Png)
            {
                var pngExporter = new PngExporter {
                    Width = 1600, Height = 1000, Background = OxyColors.White
                };
                pngExporter.ExportToFile(pm, fullFileName);
            }

            if (exportType == ExportType.SVG)
            {
                var exporter = new SvgExporter {
                    Width = 1600, Height = 1000
                };
                using (var stream = File.Create(fullFileName.Replace(".png", ".1.svg"))) {
                    exporter.Export(pm, stream);
                }
            }
        }
コード例 #7
0
        public void SaveSvg()
        {
            var path = this.GetFilename(".svg files|*.svg", ".svg");

            if (path != null)
            {
                // Using a WPF render context to measure the text
                var textMeasurer = new ShapesRenderContext(new Canvas());
                using (var s = File.Create(path))
                {
                    var exporter = new SvgExporter
                    {
                        Width        = this.Plot.ActualWidth,
                        Height       = this.Plot.ActualHeight,
                        IsDocument   = true,
                        TextMeasurer = textMeasurer
                    };
                    exporter.Export(this.Model, s);
                }

                OpenContainingFolder(path);
            }
        }
コード例 #8
0
        private void sVGToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SelectFolder();

            try
            {
                // Export to SVG
                string FileNameTop   = Path.Combine(OutPath, DateTime.Now.ToString("yyyyMMddHHmmss_") + currentSystemName + "_Top".AddSuffixToFilename(".svg"));
                string FileNameFront = Path.Combine(OutPath, DateTime.Now.ToString("yyyyMMddHHmmss_") + currentSystemName + "_Front".AddSuffixToFilename(".svg"));
                string FileNameSide  = Path.Combine(OutPath, DateTime.Now.ToString("yyyyMMddHHmmss_") + currentSystemName + "_Side".AddSuffixToFilename(".svg"));

                using (var stream = File.Create(FileNameTop))
                {
                    var exporter = new OxyPlot.SvgExporter {
                        Width = 600, Height = 400
                    };
                    exporter.Export(plotViewTop.Model, stream);
                }
                using (var stream = File.Create(FileNameFront))
                {
                    var exporter = new OxyPlot.SvgExporter {
                        Width = 600, Height = 400
                    };
                    exporter.Export(plotViewFront.Model, stream);
                }
                using (var stream = File.Create(FileNameSide))
                {
                    var exporter = new OxyPlot.SvgExporter {
                        Width = 600, Height = 400
                    };
                    exporter.Export(plotViewSide.Model, stream);
                }
            }
            catch
            {
            }
        }
コード例 #9
0
        private void Speichern_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "PDF Image|*.pdf|PNG Image|*.png|SVG Image|*.svg";
            sfd.Title  = "Diagramm Speichern";
            sfd.ShowDialog();
            if (sfd.FileName != "")
            {
                FileStream fs = (FileStream)sfd.OpenFile();
                switch (sfd.FilterIndex)
                {
                case 1:
                    var pdfExporter = new PdfExporter {
                        Width = 600, Height = 400
                    };
                    pdfExporter.Export(plot1.Model, fs);
                    break;

                case 2:
                    var pngExporter = new PngExporter {
                        Width = 600, Height = 400, Background = OxyColors.White
                    };
                    pngExporter.Export(plot1.Model, fs);
                    break;

                case 3:
                    var exporter = new SvgExporter {
                        Width = 600, Height = 400
                    };
                    exporter.Export(plot1.Model, fs);
                    break;
                }
                fs.Close();
            }
        }
コード例 #10
0
ファイル: HeatmapTest.cs プロジェクト: msdna/MultiAlign
        public void TestLcmsWarpAlignment(string path1, string path2, string svgPath)
        {
            // Convert relative paths to absolute paths
            path1 = GetPath(path1);
            path2 = GetPath(path2);
            svgPath = GetPath(HEATMAP_RESULTS_FOLDER_BASE + svgPath);

            var aligner = new LcmsWarpFeatureAligner();

            var baselineMs = UmcLoaderFactory.LoadMsFeatureData(path1);
            var aligneeMs = UmcLoaderFactory.LoadMsFeatureData(path2);
            var finder = FeatureFinderFactory.CreateFeatureFinder(FeatureFinderType.TreeBased);

            var tolerances = new FeatureTolerances
            {
                FragmentationWindowSize = .5,
                Mass = 13,
                DriftTime = .3,
                Net = .01
            };
            var options = new LcmsFeatureFindingOptions(tolerances)
            {
                MaximumNetRange = .002
            };

            var baseline = finder.FindFeatures(baselineMs, options, null);
            var alignee = finder.FindFeatures(aligneeMs, options, null);
            var data = aligner.Align(baseline, alignee);

            var plotModel1 = new PlotModel
            {
                Subtitle = "Interpolated, cartesian axes",
                Title = "HeatMapSeries"
            };

            var palette = OxyPalettes.Hot(200);
            var linearColorAxis1 = new LinearColorAxis
            {
                InvalidNumberColor = OxyColors.Gray,
                Position = AxisPosition.Right,
                Palette = palette
            };
            plotModel1.Axes.Add(linearColorAxis1);

            // linearColorAxis1.

            var linearAxis1 = new LinearAxis {Position = AxisPosition.Bottom};
            plotModel1.Axes.Add(linearAxis1);

            var linearAxis2 = new LinearAxis();
            plotModel1.Axes.Add(linearAxis2);

            var heatMapSeries1 = new HeatMapSeries
            {
                X0 = 0,
                X1 = 1,
                Y0 = 0,
                Y1 = 1,
                FontSize = .2
            };

            var scores = data.heatScores;
            var width = scores.GetLength(0);
            var height = scores.GetLength(1);

            heatMapSeries1.Data = new double[width, height];

            for (var i = 0; i < width; i++)
            {
                for (var j = 0; j < height; j++)
                {
                    heatMapSeries1.Data[i, j] = Convert.ToDouble(scores[i, j]);
                }
            }

            plotModel1.Series.Add(heatMapSeries1);

            var svg = new SvgExporter();
            var svgString = svg.ExportToString(plotModel1);
            using (var writer = File.CreateText(svgPath + ".svg"))
            {
                writer.Write(svgString);
            }
        }
コード例 #11
0
ファイル: ScatterPlotTest.cs プロジェクト: msdna/MultiAlign
        public void TestMsFeatureScatterPlot(string path1, string path2, string pngPath)
        {
            // Convert relative paths to absolute paths
            path1 = GetPath(path1);
            path2 = GetPath(path2);
            pngPath = GetPath(pngPath);

            var fiOutput = new FileInfo(pngPath);
            var didirectory = fiOutput.Directory;
            if (didirectory == null)
                throw new DirectoryNotFoundException(pngPath);

            if (!didirectory.Exists)
                didirectory.Create();

            var aligner = new LcmsWarpFeatureAligner();

            var baselineMs = UmcLoaderFactory.LoadMsFeatureData(path1);
            var aligneeMs = UmcLoaderFactory.LoadMsFeatureData(path2);
            var finder = FeatureFinderFactory.CreateFeatureFinder(FeatureFinderType.TreeBased);

            var tolerances = new FeatureTolerances
            {
                FragmentationWindowSize = .5,
                Mass = 13,
                DriftTime = .3,
                Net = .01
            };
            var options = new LcmsFeatureFindingOptions(tolerances);
            options.MaximumNetRange = .002;

            var baseline = finder.FindFeatures(baselineMs, options, null);
            var alignee = finder.FindFeatures(aligneeMs, options, null);
            var alignmentResults = aligner.Align(baseline, alignee);

            var plotModel1 = new PlotModel
            {
                Subtitle = "Interpolated, cartesian axes",
                Title = "HeatMapSeries"
            };

            var palette = OxyPalettes.Hot(200);
            var linearColorAxis1 = new LinearColorAxis
            {
                InvalidNumberColor = OxyColors.Gray,
                Position = AxisPosition.Right,
                Palette = palette
            };
            plotModel1.Axes.Add(linearColorAxis1);

            // linearColorAxis1.

            var linearAxis1 = new LinearAxis {Position = AxisPosition.Bottom};
            plotModel1.Axes.Add(linearAxis1);

            var linearAxis2 = new LinearAxis();
            plotModel1.Axes.Add(linearAxis2);

            var heatMapSeries1 = new HeatMapSeries
            {
                X0 = 0,
                X1 = 1,
                Y0 = 0,
                Y1 = 1,
                FontSize = .2
            };

            var scores = alignmentResults.heatScores;
            var width = scores.GetLength(0);
            var height = scores.GetLength(1);

            heatMapSeries1.Data = new double[width, height];

            var seriesData = heatMapSeries1.Data;
            for (var i = 0; i < width; i++)
            {
                for (var j = 0; j < height; j++)
                {
                    seriesData[i, j] = Convert.ToDouble(scores[i, j]);
                }
            }

            plotModel1.Series.Add(heatMapSeries1);

            var svg = new SvgExporter();
            var svgString = svg.ExportToString(plotModel1);

            var xml = new XmlDocument();
            xml.LoadXml(svgString);
            var x = SvgDocument.Open(xml); // Svg.SvgDocument();
            var bmp = x.Draw();

            bmp.Save(pngPath);

            var heatmap = HeatmapFactory.CreateAlignedHeatmap(alignmentResults.heatScores);
            var netHistogram = HistogramFactory.CreateHistogram(alignmentResults.netErrorHistogram, "NET Error", "NET Error");
            var massHistogram = HistogramFactory.CreateHistogram(alignmentResults.massErrorHistogram, "Mass Error", "Mass Error (ppm)");

            var baseName = Path.Combine(didirectory.FullName, Path.GetFileNameWithoutExtension(fiOutput.Name));

            var encoder = new SvgEncoder();
            PlotImageUtility.SaveImage(heatmap, baseName + "_heatmap.svg", encoder);
            PlotImageUtility.SaveImage(netHistogram, baseName + "_netHistogram.svg", encoder);
            PlotImageUtility.SaveImage(massHistogram, baseName + "_massHistogram.svg", encoder);
        }
コード例 #12
0
ファイル: ScatterPlotTest.cs プロジェクト: msdna/MultiAlign
        public void TestSimpleCreation()
        {
            var random = new Random();
            var points = new List<int> {100, 1000, 10000, 100000};

            foreach (var totalPoints in points)
            {
                var start = DateTime.Now;
                var plotModel1 = new PlotModel {Subtitle = "No 'binning'", Title = "ScatterSeries (n=32768)"};

                var linearAxis1 = new LinearAxis {Position = AxisPosition.Bottom};
                plotModel1.Axes.Add(linearAxis1);

                var linearAxis2 = new LinearAxis();
                plotModel1.Axes.Add(linearAxis2);

                var scatterSeries1 = new ScatterSeries
                {
                    MarkerSize = 1,
                    MarkerStrokeThickness = 0,
                    MarkerType = MarkerType.Diamond,
                    Title = "Series 1" + totalPoints
                };

                var pointList = new List<ScatterPoint>();
                for (var i = 0; i < totalPoints; i++)
                {
                    var point = new ScatterPoint
                    {
                        X = random.NextDouble(),
                        Y = random.NextDouble()
                    };
                    pointList.Add(point);
                }
                Console.WriteLine();

                var end = DateTime.Now;
                Console.WriteLine("Creation Part of Test Took: {0:.00} seconds for {1} points",
                    end.Subtract(start).TotalSeconds, totalPoints);

                start = DateTime.Now;
                scatterSeries1.Points.AddRange(pointList);
                plotModel1.Series.Add(scatterSeries1);
                end = DateTime.Now;
                Console.WriteLine("Scatter Plot Part of Test Took: {0:.00} seconds for {1} points",
                    end.Subtract(start).TotalSeconds, totalPoints);

                start = DateTime.Now;
                var svg = new SvgExporter();
                var svgString = svg.ExportToString(plotModel1);

                var xml = new XmlDocument();
                xml.LoadXml(svgString);
                var x = SvgDocument.Open(xml); // Svg.SvgDocument();
                var bmp = x.Draw();
                var outputFilePath = GetPath(@"testResults\ScatterPlot\testScatter" + totalPoints + ".jpg");
                bmp.Save(outputFilePath);

                end = DateTime.Now;
                Console.WriteLine("Saving Part of Test Took: {0:.00} seconds for {1} points",
                    end.Subtract(start).TotalSeconds, totalPoints);
            }
        }
コード例 #13
0
        public void SaveSvg()
        {
            var path = this.GetFilename(".svg files|*.svg", ".svg");
            if (path != null)
            {
                // Using a WPF render context to measure the text
                var textMeasurer = new CanvasRenderContext(new Canvas());
                using (var s = File.Create(path))
                {
                    var exporter = new SvgExporter
                    {
                        Width = this.Plot.ActualWidth,
                        Height = this.Plot.ActualHeight,
                        IsDocument = true,
                        TextMeasurer = textMeasurer
                    };
                    exporter.Export(this.Model, s);
                }

                OpenContainingFolder(path);
            }
        }
コード例 #14
0
 /// <summary>
 /// Create an svg model and return it as a string.
 /// </summary>
 /// <param name="width">The width (points).</param>
 /// <param name="height">The height (points).</param>
 /// <param name="isDocument">if set to <c>true</c>, the xml headers will be included (?xml and !DOCTYPE).</param>
 /// <param name="textMeasurer">The text measurer.</param>
 /// <returns>The svg string.</returns>
 public string ToSvg(double width, double height, bool isDocument, IRenderContext textMeasurer)
 {
     return(SvgExporter.ExportToString(this, width, height, isDocument, textMeasurer));
 }
コード例 #15
0
        /// <summary>
        /// Save plot model to SVG file.
        /// </summary>
        /// <param name="path"></param>
        /// <param name="plotModel"></param>
        public static void SaveSVG(string path, PlotModel plotModel, double width = double.NaN, double height = double.NaN)
        {
            using (var stream = File.Create(path))
            {
                var exporter = new SvgExporter();

                if (!double.IsNaN(width))
                {
                    exporter.Width = width;
                }

                if (!double.IsNaN(height))
                {
                    exporter.Height = height;
                }

                exporter.Export(plotModel, stream);
            }
        }
コード例 #16
0
 /// <summary>
 /// Saves the plot to a svg file.
 /// </summary>
 /// <param name="fileName">Name of the file.</param>
 /// <param name="width">The width (points).</param>
 /// <param name="height">The height (points).</param>
 /// <param name="textMeasurer">The text measurer.</param>
 public void SaveSvg(string fileName, double width, double height, IRenderContext textMeasurer = null)
 {
     SvgExporter.Export(this, fileName, width, height, textMeasurer);
 }
コード例 #17
0
ファイル: HeatmapTest.cs プロジェクト: msdna/MultiAlign
        public void TestSimpleCreation()
        {
            var plotModel1 = new PlotModel
            {
                PlotType = PlotType.Cartesian,
                Subtitle = "Interpolated, cartesian axes",
                Title = "HeatMapSeries"
            };

            var palette = OxyPalettes.Hot(200);
            var linearColorAxis1 = new LinearColorAxis
            {
                InvalidNumberColor = OxyColors.Gray,
                Position = AxisPosition.Right,
                Palette = palette
            };

            plotModel1.Axes.Add(linearColorAxis1);

            var linearAxis1 = new LinearAxis {Position = AxisPosition.Bottom};
            plotModel1.Axes.Add(linearAxis1);
            var linearAxis2 = new LinearAxis();
            plotModel1.Axes.Add(linearAxis2);
            var heatMapSeries1 = new HeatMapSeries
            {
                X0 = 0.0,
                X1 = 1.0,
                Y0 = 0.0,
                Y1 = 1.0,
                FontSize = .2,
                Data = new Double[2, 3]
            };
            //heatMapSeries1.LabelFontSize = 0.2;
            heatMapSeries1.Data[0, 0] = 0;
            heatMapSeries1.Data[0, 1] = 10.2;
            heatMapSeries1.Data[0, 2] = 20.4;
            heatMapSeries1.Data[1, 0] = 0.1;
            heatMapSeries1.Data[1, 1] = 0.3;
            heatMapSeries1.Data[1, 2] = 0.2;
            plotModel1.Series.Add(heatMapSeries1);

            var svg = new SvgExporter();
            var svgString = svg.ExportToString(plotModel1);

            var xml = new XmlDocument();
            xml.LoadXml(svgString);
            var x = SvgDocument.Open(xml); // Svg.SvgDocument();
            var bmp = x.Draw();
            bmp.Save(GetPath(HEATMAP_RESULTS_FOLDER_BASE + "testbmp.jpg"));

            var encoder = new PngPlotModelEncoder();
            encoder.SaveImage(plotModel1, GetPath(HEATMAP_RESULTS_FOLDER_BASE + "mine.png"));
        }