| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | using InABox.WPF;using InABox.Wpf;using Syncfusion.UI.Xaml.ImageEditor;using Syncfusion.UI.Xaml.ImageEditor.Enums;using System.Collections.Generic;using System.Drawing;using System.Drawing.Design;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Shapes;using Color = System.Windows.Media.Color;using Image = System.Windows.Controls.Image;namespace InABox.DynamicGrid{    /// <summary>    /// Interaction logic for SignaturePadWindow.xaml    /// </summary>    public partial class SignaturePadWindow : ThemableWindow    {        public SignaturePadWindow(ImageSource? source, bool hasName = false)        {            InitializeComponent();            if (!hasName)            {                NameContainer.Visibility = Visibility.Collapsed;            }            if(source != null)            {                Editor.Children.Add(new Image                {                    Source = source                });            }            IsEmpty = source == null;        }        private bool IsEmpty;        public BitmapSource? Image { get; private set; }        public string SignatureName => NameEditor.Text;        private void OK_Click(object sender, RoutedEventArgs e)        {            if (IsEmpty)            {                Image = null;            }            else            {                var rtb = new RenderTargetBitmap(400, 400, 96, 96, PixelFormats.Default);                rtb.Render(Editor);                using (var ms = new MemoryStream())                {                    var encoder = new PngBitmapEncoder();                    encoder.Frames.Add(BitmapFrame.Create(rtb));                    encoder.Save(ms);                    Image = ImageUtils.BitmapImageFromStream(ms);                }            }            DialogResult = true;        }        private void Cancel_Click(object sender, RoutedEventArgs e)        {            DialogResult = false;        }        private void Clear_Click(object sender, RoutedEventArgs e)        {            Editor.Strokes.Clear();            Editor.Children.Clear();            IsEmpty = true;        }        private void Editor_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)        {            IsEmpty = false;        }    }}
 |