public void CopyXaml()
        {
            var xaml = XamlExporter.ExportToString(
                this.Model, this.Plot.ActualWidth, this.Plot.ActualHeight, this.Model.Background);

            Clipboard.SetText(xaml);
        }
Exemplo n.º 2
0
        /// <summary>
        /// The to file.
        /// </summary>
        /// <param name="chart">
        /// The chart.
        /// </param>
        public static void ToFile(PlotModel chart)
        {
            var sfd = new SaveFileDialog();

            sfd.CheckFileExists  = false;
            sfd.CheckPathExists  = true;
            sfd.DefaultExt       = ".png";
            sfd.AddExtension     = true;
            sfd.Filter           = Labels.GraphicFilesFilter;
            sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            sfd.Title            = Labels.GraphicFilesSaveFileDialogTitle;
            if (sfd.ShowDialog().GetValueOrDefault())
            {
                using (var stream = new FileStream(sfd.FileName, FileMode.Create))
                {
                    BitmapEncoder encoder   = null;
                    string        extension = Path.GetExtension(sfd.FileName);
                    var           enc       = new ASCIIEncoding();
                    if (extension != null)
                    {
                        switch (extension.ToLower())
                        {
                        case ".bmp":
                            encoder = new BmpBitmapEncoder();
                            break;

                        case ".png":
                            encoder = new PngBitmapEncoder();
                            break;

                        case ".gif":
                            encoder = new GifBitmapEncoder();
                            break;

                        case ".tif":
                            encoder = new TiffBitmapEncoder();
                            break;

                        case ".wmp":
                            encoder = new WmpBitmapEncoder();
                            break;

                        case ".svg":
                            var rc  = new ShapesRenderContext(null);
                            var svg = OxyPlot.SvgExporter.ExportToString(chart, chart.Width, chart.Height, true, rc);
                            stream.Write(enc.GetBytes(svg), 0, svg.Length);
                            return;

                        case ".xaml":
                            var xaml = XamlExporter.ExportToString(chart, chart.Width, chart.Height, OxyColor.FromArgb(255, 255, 255, 255));
                            stream.Write(enc.GetBytes(xaml), 0, xaml.Length);
                            return;

                        case ".jpg":
                        default:
                            encoder = new JpegBitmapEncoder();
                            break;
                        }
                    }

                    var bitmap = PngExporter.ExportToBitmap(chart, (int)chart.Width, (int)chart.Height, OxyColor.FromArgb(255, 255, 255, 255));

                    // Save to file
                    if (encoder != null)
                    {
                        encoder.Frames.Add(BitmapFrame.Create(bitmap));
                        encoder.Save(stream);
                    }
                }
            }
        }