Export.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.IO;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using System.Windows.Media;
  5. using System.Windows.Media.Imaging;
  6. namespace DrawGraph
  7. {
  8. class Export
  9. {
  10. public static void ToPng(Canvas canvas, string path)
  11. {
  12. RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
  13. (int)canvas.Width, (int)canvas.Height,
  14. 96d, 96d, PixelFormats.Pbgra32);
  15. canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
  16. canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
  17. renderBitmap.Render(canvas);
  18. //JpegBitmapEncoder encoder = new JpegBitmapEncoder();
  19. PngBitmapEncoder encoder = new PngBitmapEncoder();
  20. encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
  21. using (FileStream fs = new FileStream(path, FileMode.Create))
  22. {
  23. encoder.Save(fs);
  24. }
  25. }
  26. public static void ToJpeg(Canvas canvas, string path)
  27. {
  28. RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
  29. (int)canvas.Width, (int)canvas.Height,
  30. 96d, 96d, PixelFormats.Pbgra32);
  31. canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
  32. canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
  33. renderBitmap.Render(canvas);
  34. JpegBitmapEncoder encoder = new JpegBitmapEncoder();
  35. encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
  36. using (FileStream fs = new FileStream(path, FileMode.Create))
  37. {
  38. encoder.Save(fs);
  39. }
  40. }
  41. public static void Print(Canvas canvas)
  42. {
  43. PrintDialog pd = new PrintDialog();
  44. if (pd.ShowDialog() == true)
  45. {
  46. pd.PrintVisual(canvas, "Printed with DrawGraph");
  47. }
  48. }
  49. }
  50. }