ImageViewerEditor.xaml.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Xamarin.Forms;
  8. using Xamarin.Forms.Xaml;
  9. //using static Android.Graphics.ImageDecoder;
  10. namespace comal.timesheets
  11. {
  12. public delegate void SaveSelected(byte[] array);
  13. [XamlCompilation(XamlCompilationOptions.Compile)]
  14. public partial class ImageViewerEditor : ContentPage
  15. {
  16. public event DeleteSelected OnDeleteSelected;
  17. public event SaveSelected OnSaveSelected;
  18. public ImageViewerEditor(ImageSource source, bool candelete = false)
  19. {
  20. InitializeComponent ();
  21. NavigationPage.SetHasBackButton(this, false);
  22. imageEditor.Source = source;
  23. imageEditor.ImageSaving += ImageEditor_ImageSaving;
  24. imageEditor.ToolbarSettings.VisibleShapesItems = Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Rectangle
  25. | Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Circle
  26. | Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Line
  27. | Syncfusion.SfImageEditor.XForms.ImageEditorShapes.Arrow;
  28. if (candelete)
  29. {
  30. deleteBtn.IsVisible = true;
  31. }
  32. if (GlobalVariables.DeviceString == "i")
  33. {
  34. blankLbl.IsVisible = true;
  35. }
  36. }
  37. private void ExitBtn_Clicked(object sender, EventArgs e)
  38. {
  39. Navigation.PopAsync();
  40. }
  41. private void ImageEditor_ImageSaving(object sender, Syncfusion.SfImageEditor.XForms.ImageSavingEventArgs args)
  42. {
  43. var stream = args.Stream;
  44. MemoryStream memoryStream = new MemoryStream();
  45. stream.CopyTo(memoryStream);
  46. byte[] array = memoryStream.ToArray();
  47. OnSaveSelected?.Invoke(array);
  48. args.Cancel = true;
  49. Navigation.PopAsync();
  50. }
  51. private void DeleteBtn_Clicked(object sender, EventArgs e)
  52. {
  53. OnDeleteSelected?.Invoke();
  54. Navigation.PopAsync();
  55. }
  56. }
  57. }