using System.Collections.Generic; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; namespace Compdfkit_Tools.PDFControl { /// /// CPDFSignControl.xaml 的交互逻辑 /// public partial class FillDigitalSignatureControl : UserControl { private Dictionary TabDict { get; set; } public FillDigitalSignatureControl() { InitializeComponent(); TabDict=new Dictionary(); TabDict["Keyboard"] = KeyboardBorder; TabDict["Trackpad"] = TrackpadBorder; TabDict["Image"] = ImageBorder; TabDict["None"] = NoneBorder; SetCheckedTab("Keyboard"); } private void TextAlignBtn_Click(object sender, RoutedEventArgs e) { ToggleButton checkBtn=sender as ToggleButton; if(checkBtn == null) { return; } checkBtn.IsChecked = true; if(checkBtn!= TextAlignLeftBtn) { TextAlignLeftBtn.IsChecked= false; } if (checkBtn != TextAlignRightBtn) { TextAlignRightBtn.IsChecked = false; } } private void Border_MouseDown(object sender, MouseButtonEventArgs e) { Border clickBorder = sender as Border; if(clickBorder == null || clickBorder.Tag==null) { return; } SetCheckedTab(clickBorder.Tag.ToString()); ImagePickPanel.Visibility = Visibility.Hidden; if (clickBorder== TrackpadBorder) { CanvaDrawPopup.Visibility = Visibility.Visible; } if(clickBorder== ImageBorder) { ImagePickPanel.Visibility = Visibility.Visible; } } private void SetCheckedTab(string tab) { if (TabDict != null && TabDict.ContainsKey(tab)) { foreach (string key in TabDict.Keys) { Border checkBorder = TabDict[key]; if(checkBorder == null) { continue; } checkBorder.BorderThickness = new Thickness(0); if(key==tab) { checkBorder.BorderThickness = new Thickness(0, 0, 0, 2); } } } } private void CanvasPopupClose_Click(object sender, RoutedEventArgs e) { CanvaDrawPopup.Visibility = Visibility.Collapsed; } private void CanvasClearBtn_Click(object sender, RoutedEventArgs e) { DrawInkCanvas.Strokes.Clear(); } public void GetDrawInk() { if (DrawInkCanvas != null && DrawInkCanvas.Strokes != null && DrawInkCanvas.Strokes.Count > 0) { Rect bound= DrawInkCanvas.Strokes.GetBounds(); DrawingVisual drawVisual = new DrawingVisual(); DrawingContext drawContext= drawVisual.RenderOpen(); foreach (Stroke drawStroke in DrawInkCanvas.Strokes) { Pen drawPen = new Pen(new SolidColorBrush(drawStroke.DrawingAttributes.Color), drawStroke.DrawingAttributes.Width); PathGeometry drawPath = new PathGeometry(); PathFigureCollection Figures = new PathFigureCollection(); PathFigure AddFigure = new PathFigure(); Figures.Add(AddFigure); drawPath.Figures = Figures; if(drawStroke.StylusPoints.Count>1) { StylusPoint startPoint= drawStroke.StylusPoints[0]; AddFigure.StartPoint= new Point(startPoint.X - bound.X, startPoint.Y - bound.Y); for (int i = 1;i< drawStroke.StylusPoints.Count;i++) { StylusPoint drawPoint = drawStroke.StylusPoints[i]; Point offsetPoint = new Point(drawPoint.X - bound.X, drawPoint.Y - bound.Y); LineSegment drawSegment = new LineSegment(); drawSegment.Point = offsetPoint; AddFigure.Segments.Add(drawSegment); } } if(AddFigure.Segments.Count > 0) { drawContext.DrawGeometry(null, drawPen, drawPath); } } drawContext.Close(); RenderTargetBitmap renderBitmap=new RenderTargetBitmap((int)bound.Width,(int)bound.Height,96,96,PixelFormats.Pbgra32); renderBitmap.Render(drawVisual); } } private void ReasonCheckBox_Click(object sender, RoutedEventArgs e) { CheckBox checkItem = sender as CheckBox; if (checkItem == null) { return; } ReasonPanel.Visibility=checkItem.IsChecked==true? Visibility.Visible: Visibility.Collapsed; } } }