Export.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System.IO;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using System.Windows.Media;
  5. using System.Xml;
  6. using System.Windows.Media.Imaging;
  7. using Microsoft.Win32;
  8. namespace DrawGraph
  9. {
  10. public class Export
  11. {
  12. public static void ToPng(Canvas canvas, string path)
  13. {
  14. RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
  15. (int)canvas.Width, (int)canvas.Height,
  16. 96d, 96d, PixelFormats.Pbgra32);
  17. canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
  18. canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
  19. renderBitmap.Render(canvas);
  20. //JpegBitmapEncoder encoder = new JpegBitmapEncoder();
  21. PngBitmapEncoder encoder = new PngBitmapEncoder();
  22. encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
  23. using (FileStream fs = new FileStream(path, FileMode.Create))
  24. {
  25. encoder.Save(fs);
  26. }
  27. }
  28. public static void ToJpeg(Canvas canvas, string path)
  29. {
  30. RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
  31. (int)canvas.Width, (int)canvas.Height,
  32. 96d, 96d, PixelFormats.Pbgra32);
  33. canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
  34. canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
  35. renderBitmap.Render(canvas);
  36. JpegBitmapEncoder encoder = new JpegBitmapEncoder();
  37. encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
  38. using (FileStream fs = new FileStream(path, FileMode.Create))
  39. {
  40. encoder.Save(fs);
  41. }
  42. }
  43. public static void Print(Canvas canvas)
  44. {
  45. PrintDialog pd = new PrintDialog();
  46. if (pd.ShowDialog() == true)
  47. {
  48. pd.PrintVisual(canvas, "Printed with DrawGraph");
  49. }
  50. }
  51. public static void ToGraphML(Node[] nodes)
  52. {
  53. //<? xml version = "1.0" encoding = "UTF-8" ?>
  54. // < graphml xmlns = "http://graphml.graphdrawing.org/xmlns"
  55. //xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
  56. //xsi: schemaLocation = "http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd" >
  57. XmlDocument doc = new XmlDocument();
  58. XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
  59. doc.AppendChild(declaration);
  60. XmlProcessingInstruction pi =
  61. doc.CreateProcessingInstruction("graphml", "xmlns=\"http://graphml.graphdrawing.org/xmlns \" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance \" xsi: schemaLocation = \"http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd \"");
  62. SaveFileDialog sfd = new SaveFileDialog();
  63. var root = doc.CreateElement("graph");
  64. foreach (var node in nodes)
  65. {
  66. var XNode = doc.CreateElement("node");
  67. }
  68. sfd.Filter = "GraphML files (*.graphml)|*.graphml";
  69. if (sfd.ShowDialog() == true)
  70. {
  71. doc.Save(sfd.FileName);
  72. }
  73. }
  74. }
  75. }