CPDFAnnotationPreviewerControl.xaml.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. using compdfkit_tools.Data;
  2. using compdfkit_tools.Helper;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Security.Permissions;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using System.Windows.Controls;
  11. using System.Windows.Data;
  12. using System.Windows.Documents;
  13. using System.Windows.Ink;
  14. using System.Windows.Input;
  15. using System.Windows.Media;
  16. using System.Windows.Media.Imaging;
  17. using System.Windows.Navigation;
  18. using System.Windows.Shapes;
  19. using static compdfkit_tools.Helper.CommonHelper;
  20. namespace compdfkit_tools.PDFControl
  21. {
  22. /// <summary>
  23. /// CPDFAnnotationPreviewer.xaml 的交互逻辑
  24. /// </summary>
  25. public partial class CPDFAnnotationPreviewerControl : UserControl
  26. {
  27. public CPDFAnnotationPreviewerControl()
  28. {
  29. InitializeComponent();
  30. }
  31. public void CollapsedAll()
  32. {
  33. MarkupGrid.Visibility = Visibility.Collapsed;
  34. HighlightPath.Visibility = Visibility.Collapsed;
  35. UnderlinePath.Visibility = Visibility.Collapsed;
  36. StrikeoutPath.Visibility = Visibility.Collapsed;
  37. SquigglyPath.Visibility = Visibility.Collapsed;
  38. FreehandGrid.Visibility = Visibility.Collapsed;
  39. FreeTextGrid.Visibility = Visibility.Collapsed;
  40. ShapeGrid.Visibility = Visibility.Collapsed;
  41. Ellipse.Visibility = Visibility.Collapsed;
  42. Rectangle.Visibility = Visibility.Collapsed;
  43. Line.Visibility = Visibility.Collapsed;
  44. NoteGrid.Visibility = Visibility.Collapsed;
  45. StampGrid.Visibility = Visibility.Collapsed;
  46. }
  47. public void DrawMarkUpPreview(CPDFAnnotationData annotationData)
  48. {
  49. CPDFMarkupData markupData = annotationData as CPDFMarkupData;
  50. CollapsedAll();
  51. CPDFAnnotationType annotationType = annotationData.AnnotationType;
  52. switch (annotationType)
  53. {
  54. case CPDFAnnotationType.Highlight:
  55. MarkupGrid.Visibility = Visibility.Visible;
  56. HighlightPath.Visibility = Visibility.Visible;
  57. HighlightPath.Stroke = new SolidColorBrush(markupData.Color);
  58. HighlightPath.Opacity = markupData.Opacity;
  59. break;
  60. case CPDFAnnotationType.Underline:
  61. MarkupGrid.Visibility = Visibility.Visible;
  62. UnderlinePath.Visibility = Visibility.Visible;
  63. UnderlinePath.Stroke = new SolidColorBrush(markupData.Color);
  64. UnderlinePath.Opacity = markupData.Opacity;
  65. break;
  66. case CPDFAnnotationType.Squiggly:
  67. MarkupGrid.Visibility = Visibility.Visible;
  68. SquigglyPath.Visibility = Visibility.Visible;
  69. SquigglyPath.Stroke = new SolidColorBrush(markupData.Color);
  70. SquigglyPath.Opacity = markupData.Opacity;
  71. break;
  72. case CPDFAnnotationType.Strikeout:
  73. MarkupGrid.Visibility = Visibility.Visible;
  74. StrikeoutPath.Visibility = Visibility.Visible;
  75. StrikeoutPath.Stroke = new SolidColorBrush(markupData.Color);
  76. StrikeoutPath.Opacity = markupData.Opacity;
  77. break;
  78. }
  79. }
  80. public void DrawShapePreview(CPDFAnnotationData annotationData)
  81. {
  82. CPDFAnnotationType annotationType = annotationData.AnnotationType;
  83. switch (annotationType)
  84. {
  85. case CPDFAnnotationType.Circle:
  86. CPDFShapeData circleData = annotationData as CPDFShapeData;
  87. ShapeGrid.Visibility = Visibility.Visible;
  88. Ellipse.Visibility = Visibility.Visible;
  89. Ellipse.StrokeThickness = circleData.Thickness;
  90. Ellipse.Opacity = circleData.Opacity;
  91. Ellipse.Fill = new SolidColorBrush(circleData.FillColor);
  92. Ellipse.Stroke = new SolidColorBrush(circleData.BorderColor);
  93. Ellipse.StrokeDashArray = circleData.DashStyle.Dashes;
  94. break;
  95. case CPDFAnnotationType.Square:
  96. CPDFShapeData squareData = annotationData as CPDFShapeData;
  97. ShapeGrid.Visibility = Visibility.Visible;
  98. Rectangle.Visibility = Visibility.Visible;
  99. Rectangle.StrokeThickness = squareData.Thickness;
  100. Rectangle.Opacity = squareData.Opacity;
  101. Rectangle.Fill = new SolidColorBrush(squareData.FillColor);
  102. Rectangle.Stroke = new SolidColorBrush(squareData.BorderColor);
  103. Rectangle.StrokeDashArray = squareData.DashStyle.Dashes;
  104. break;
  105. case CPDFAnnotationType.Line:
  106. case CPDFAnnotationType.Arrow:
  107. CPDFLineShapeData lineShapeData = annotationData as CPDFLineShapeData;
  108. ShapeGrid.Visibility = Visibility.Visible;
  109. Line.Visibility = Visibility.Visible;
  110. ArrowHelper arrowLine = new ArrowHelper();
  111. arrowLine.ArrowLength = 8;
  112. arrowLine.LineStart = new Point(20, 50);
  113. arrowLine.LineEnd = new Point(50, 20);
  114. arrowLine.StartSharp = lineShapeData.LineType.HeadLineType;
  115. arrowLine.EndSharp = lineShapeData.LineType.TailLineType;
  116. Line.Stroke = new SolidColorBrush(lineShapeData.BorderColor);
  117. Line.StrokeThickness = lineShapeData.Thickness;
  118. Line.Opacity = lineShapeData.Opacity;
  119. Line.Data = arrowLine.BuildArrowBody();
  120. Line.StrokeDashArray = lineShapeData.DashStyle.Dashes;
  121. break;
  122. }
  123. }
  124. public void DrawFreehandPreview(CPDFAnnotationData annotationData)
  125. {
  126. CPDFFreehandData freehandData = annotationData as CPDFFreehandData;
  127. CollapsedAll();
  128. FreehandGrid.Visibility = Visibility.Visible;
  129. SharpPath.Stroke = new SolidColorBrush(freehandData.BorderColor);
  130. SharpPath.Opacity = freehandData.Opacity;
  131. SharpPath.StrokeThickness = freehandData.Thickness;
  132. }
  133. public void DrawNotePreview(CPDFAnnotationData annotationData)
  134. {
  135. CollapsedAll();
  136. NoteGrid.Visibility = Visibility.Visible;
  137. CPDFNoteData noteData = annotationData as CPDFNoteData;
  138. NotePath.Fill = new SolidColorBrush(noteData.BorderColor);
  139. }
  140. public void DrawStampPreview(WriteableBitmap writeableBitmap)
  141. {
  142. CollapsedAll();
  143. StampGrid.Visibility = Visibility.Visible;
  144. StampImage.Source = writeableBitmap;
  145. }
  146. public void DrawFreeTextPreview(CPDFFreeTextData freeTextData)
  147. {
  148. CollapsedAll();
  149. FreeTextGrid.Visibility = Visibility.Visible;
  150. FreeText.FontFamily = new FontFamily(freeTextData.FontFamily);
  151. FreeText.FontSize = freeTextData.FontSize/1.2;
  152. FreeText.Foreground = new SolidColorBrush(freeTextData.BorderColor);
  153. FreeText.Opacity = freeTextData.Opacity;
  154. if (freeTextData.IsBold)
  155. {
  156. FreeText.FontWeight = FontWeights.Bold;
  157. }
  158. else
  159. {
  160. FreeText.FontWeight = FontWeights.Medium;
  161. }
  162. if (freeTextData.IsItalic)
  163. {
  164. FreeText.FontStyle = FontStyles.Italic;
  165. }
  166. else
  167. {
  168. FreeText.FontStyle = FontStyles.Normal;
  169. }
  170. }
  171. }
  172. }