| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | using InABox.WPF;using InABox.Wpf;using Syncfusion.UI.Xaml.ImageEditor;using Syncfusion.UI.Xaml.ImageEditor.Enums;using System;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;        }    }}
 |