ImageViewerEditor.xaml.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.IO;
  3. using System.Threading.Tasks;
  4. using InABox.Mobile;
  5. using Xamarin.Forms;
  6. using Xamarin.Forms.Xaml;
  7. //using static Android.Graphics.ImageDecoder;
  8. namespace PRS.Mobile
  9. {
  10. public delegate void SaveSelected(byte[] array);
  11. [XamlCompilation(XamlCompilationOptions.Compile)]
  12. public partial class ImageViewerEditor
  13. {
  14. private Action _deleteaction;
  15. private readonly Action<byte[]> _saveaction;
  16. public ImageViewerEditor(ImageSource source, Action<byte[]> save, Action delete = null)
  17. {
  18. _deleteaction = delete;
  19. _saveaction = save;
  20. InitializeComponent ();
  21. _delete.IsVisible = delete != null;
  22. _save.IsVisible = save != null;
  23. imageEditor.Source = source;
  24. imageEditor.ImageSaving += ImageEditor_ImageSaving;
  25. imageEditor.ToolbarSettings.VisibleShapesItems = Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Rectangle
  26. | Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Circle
  27. | Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Line
  28. | Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Arrow;
  29. }
  30. private void ExitBtn_Clicked(object sender, EventArgs e)
  31. {
  32. Navigation.PopAsync();
  33. }
  34. private void ImageEditor_ImageSaving(object sender, Syncfusion.SfImageEditor.XForms.ImageSavingEventArgs args)
  35. {
  36. var stream = args.Stream;
  37. MemoryStream memoryStream = new MemoryStream();
  38. stream.CopyTo(memoryStream);
  39. byte[] array = memoryStream.ToArray();
  40. _saveaction?.Invoke(array);
  41. args.Cancel = true;
  42. Navigation.PopAsync();
  43. }
  44. private void DeleteBtn_Clicked(object sender, EventArgs e)
  45. {
  46. _deleteaction?.Invoke();
  47. Navigation.PopAsync();
  48. }
  49. private void SaveBtn_Clicked(object sender, MobileMenuButtonClickedEventArgs args)
  50. {
  51. imageEditor.Save();
  52. }
  53. }
  54. }