Advertisement
andrzejiwaniuk

[Napisz sam] Program do pisania ręcznego (np tablet) JPEG

Jun 28th, 2013
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15. using System.IO;
  16. using Microsoft.Win32;
  17.  
  18. namespace recznePisanie
  19. {
  20.     /// <summary>
  21.     /// Jak zapisać obrazek do pliku JPEG
  22.     /// </summary>
  23.    
  24.     public partial class MainWindow : Window
  25.     {
  26.        
  27.         string nazwaPliku = "";
  28.        
  29.         public MainWindow()
  30.         {
  31.             InitializeComponent();
  32.         }
  33.  
  34.         private void btnCzysc_Click(object sender, RoutedEventArgs e)
  35.         {
  36.             //czyść obszar pisania
  37.             recznePisanie.Strokes.Clear();
  38.         }
  39.  
  40.         //zapisz obrazek jako plik JPG
  41.         public void EskportDoJPEG(InkCanvas obszar)
  42.         {
  43.             double
  44.                     x1 = obszar.Margin.Left,
  45.                     x2 = obszar.Margin.Top,
  46.                     x3 = obszar.Margin.Right,
  47.                     x4 = obszar.Margin.Bottom;
  48.  
  49.             obszar.Margin = new Thickness(0, 0, 0, 0);
  50.  
  51.             Size size = new Size(obszar.Width, obszar.Height);
  52.             obszar.Measure(size);
  53.             obszar.Arrange(new Rect(size));
  54.  
  55.             RenderTargetBitmap renderBitmap =
  56.              new RenderTargetBitmap(
  57.                (int)size.Width,
  58.                (int)size.Height,
  59.                96,
  60.                96,
  61.                PixelFormats.Default);
  62.             renderBitmap.Render(obszar);
  63.            
  64.             otworzOknoDialogoZapisz();
  65.  
  66.             using (FileStream fs = File.Open(nazwaPliku, FileMode.Create))
  67.             {
  68.                 JpegBitmapEncoder encoder = new JpegBitmapEncoder();
  69.                 encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
  70.                 encoder.Save(fs);
  71.             }
  72.             obszar.Margin = new Thickness(x1, x2, x3, x4);
  73.         }
  74.  
  75.         private void Button_Click(object sender, RoutedEventArgs e)
  76.         {
  77.             EskportDoJPEG(recznePisanie);
  78.         }
  79.         void otworzOknoDialogoZapisz()
  80.         {
  81.             //otworz save dialog box
  82.             // konfiguracja okna dialogowego Zapisu
  83.             SaveFileDialog dlg = new SaveFileDialog();
  84.             dlg.FileName = "nazwa_pliku"; // domyślna nazwa pliku
  85.             dlg.DefaultExt = ".jpg"; // domyśle rozszerzenie pliku
  86.             dlg.Filter = "Image (.jpg)|*.jpg"; // pokauj tylko pliku *.jpg
  87.  
  88.             // Pokaz okno dialogowe Zapisu
  89.             Nullable<bool> result = dlg.ShowDialog();
  90.  
  91.             // Sprawdź zmienna result z okna Dialogowe Zapis
  92.  
  93.             if (result == true)
  94.             {
  95.                 // Zapisanie dokumentu
  96.                 nazwaPliku = dlg.FileName;
  97.             }
  98.             //------
  99.         }
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement