1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace PRS.Mobile
- {
- public class SignatureEditorChangedEventArgs : EventArgs
- {
- }
- public delegate void SignatureEditorChangedEvent(object sender, SignatureEditorChangedEventArgs args);
-
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class SignatureEditor
- {
- public event SignatureEditorChangedEvent Changed;
- public void Load(byte[] data)
- {
- if (data?.Any() == true)
- {
- _frame.Background = new SolidColorBrush(Color.LightGray);
- signaturePad.IsVisible = false;
- _preview.Source = ImageSource.FromStream(() => { return new MemoryStream(data); });
- _preview.IsVisible = true;
- _label.IsVisible = false;
- }
- else
- {
- _frame.Background = new SolidColorBrush(Color.LightYellow);
- _preview.IsVisible = false;
- _preview.Source = null;
- signaturePad.IsVisible = true;
- signaturePad.Clear();
- _label.IsVisible = true;
- }
- }
- public byte[] Save()
- {
- signaturePad.Save();
- if (signaturePad.ImageSource is StreamImageSource source)
- {
- Task<Stream> task = source.Stream(System.Threading.CancellationToken.None);
- Stream stream = task.Result;
- byte[] bytes = new byte[stream.Length];
- stream.Read(bytes, 0, bytes.Length);
- Load(bytes);
- return bytes;
- }
- return new byte[] { };
- }
-
- public SignatureEditor()
- {
- InitializeComponent();
- Load(null);
- }
- private void SignaturePad_OnStrokeCompleted(object sender, EventArgs e)
- {
- Changed?.Invoke(this,new SignatureEditorChangedEventArgs());
- }
-
- }
- }
|