CPDFAnnotationPreviewerControl.xaml.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. namespace compdfkit_tools.PDFControl
  20. {
  21. /// <summary>
  22. /// CPDFAnnotationPreviewer.xaml 的交互逻辑
  23. /// </summary>
  24. public partial class CPDFAnnotationPreviewerControl : UserControl
  25. {
  26. public CPDFAnnotationPreviewerControl()
  27. {
  28. InitializeComponent();
  29. }
  30. public void CollapsedAll()
  31. {
  32. MarkupGrid.Visibility = Visibility.Collapsed;
  33. HighlightPath.Visibility = Visibility.Collapsed;
  34. UnderlinePath.Visibility = Visibility.Collapsed;
  35. StrikeoutPath.Visibility = Visibility.Collapsed;
  36. SquigglyPath.Visibility = Visibility.Collapsed;
  37. FreehandGrid.Visibility = Visibility.Collapsed;
  38. FreeTextGrid.Visibility = Visibility.Collapsed;
  39. ShapeGrid.Visibility = Visibility.Collapsed;
  40. Ellipse.Visibility = Visibility.Collapsed;
  41. Rectangle.Visibility = Visibility.Collapsed;
  42. Line.Visibility = Visibility.Collapsed;
  43. NoteGrid.Visibility = Visibility.Collapsed;
  44. }
  45. public void DrawMarkUpPreview(CPDFAnnotationData annotationData)
  46. {
  47. CPDFMarkupData markupData = annotationData as CPDFMarkupData;
  48. CollapsedAll();
  49. CPDFAnnotationType annotationType = annotationData.AnnotationType;
  50. switch (annotationType)
  51. {
  52. case CPDFAnnotationType.Highlight:
  53. MarkupGrid.Visibility = Visibility.Visible;
  54. HighlightPath.Visibility = Visibility.Visible;
  55. HighlightPath.Stroke = new SolidColorBrush(markupData.Color);
  56. HighlightPath.Opacity = markupData.Opacity;
  57. break;
  58. case CPDFAnnotationType.Underline:
  59. MarkupGrid.Visibility = Visibility.Visible;
  60. UnderlinePath.Visibility = Visibility.Visible;
  61. UnderlinePath.Stroke = new SolidColorBrush(markupData.Color);
  62. UnderlinePath.Opacity = markupData.Opacity;
  63. break;
  64. case CPDFAnnotationType.Squiggly:
  65. MarkupGrid.Visibility = Visibility.Visible;
  66. SquigglyPath.Visibility = Visibility.Visible;
  67. SquigglyPath.Stroke = new SolidColorBrush(markupData.Color);
  68. SquigglyPath.Opacity = markupData.Opacity;
  69. break;
  70. case CPDFAnnotationType.Strikeout:
  71. MarkupGrid.Visibility = Visibility.Visible;
  72. StrikeoutPath.Visibility = Visibility.Visible;
  73. StrikeoutPath.Stroke = new SolidColorBrush(markupData.Color);
  74. StrikeoutPath.Opacity = markupData.Opacity;
  75. break;
  76. }
  77. }
  78. public void DrawShapePreview(CPDFAnnotationData annotationData)
  79. {
  80. CPDFAnnotationType annotationType = annotationData.AnnotationType;
  81. switch (annotationType)
  82. {
  83. case CPDFAnnotationType.Circle:
  84. CPDFShapeData circleData = annotationData as CPDFShapeData;
  85. ShapeGrid.Visibility = Visibility.Visible;
  86. Ellipse.Visibility = Visibility.Visible;
  87. Ellipse.StrokeThickness = circleData.Thickness;
  88. Ellipse.Opacity = circleData.Opacity;
  89. Ellipse.Fill = new SolidColorBrush(circleData.FillColor);
  90. Ellipse.Stroke = new SolidColorBrush(circleData.BorderColor);
  91. Ellipse.StrokeDashArray = circleData.DashStyle.Dashes;
  92. break;
  93. case CPDFAnnotationType.Square:
  94. CPDFShapeData squareData = annotationData as CPDFShapeData;
  95. ShapeGrid.Visibility = Visibility.Visible;
  96. Rectangle.Visibility = Visibility.Visible;
  97. Rectangle.StrokeThickness = squareData.Thickness;
  98. Rectangle.Opacity = squareData.Opacity;
  99. Rectangle.Fill = new SolidColorBrush(squareData.FillColor);
  100. Rectangle.Stroke = new SolidColorBrush(squareData.BorderColor);
  101. Rectangle.StrokeDashArray = squareData.DashStyle.Dashes;
  102. break;
  103. case CPDFAnnotationType.Line:
  104. case CPDFAnnotationType.Arrow:
  105. CPDFLineShapeData lineShapeData = annotationData as CPDFLineShapeData;
  106. ShapeGrid.Visibility = Visibility.Visible;
  107. Line.Visibility = Visibility.Visible;
  108. Line.Stroke = new SolidColorBrush(lineShapeData.BorderColor);
  109. Line.StrokeThickness = lineShapeData.Thickness;
  110. Line.Opacity = lineShapeData.Opacity;
  111. break;
  112. }
  113. }
  114. public void DrawFreehandPreview(CPDFAnnotationData annotationData)
  115. {
  116. CPDFFreehandData freehandData = annotationData as CPDFFreehandData;
  117. CollapsedAll();
  118. FreehandGrid.Visibility = Visibility.Visible;
  119. SharpPath.Stroke = new SolidColorBrush(freehandData.BorderColor);
  120. SharpPath.Opacity = freehandData.Opacity;
  121. SharpPath.StrokeThickness = freehandData.Thickness;
  122. }
  123. public void DrawNotePreview(CPDFAnnotationData annotationData)
  124. {
  125. CollapsedAll();
  126. NoteGrid.Visibility = Visibility.Visible;
  127. CPDFNoteData noteData = annotationData as CPDFNoteData;
  128. NotePath.Fill = new SolidColorBrush(noteData.BorderColor);
  129. }
  130. public void InitWithAnnotationData(CPDFAnnotationData annotationData)
  131. {
  132. CollapsedAll();
  133. CPDFAnnotationType annotationType = annotationData.AnnotationType;
  134. switch (annotationType)
  135. {
  136. case CPDFAnnotationType.FreeText:
  137. FreeTextGrid.Visibility = Visibility.Visible;
  138. break;
  139. default:
  140. break;
  141. }
  142. }
  143. }
  144. }