Browse Source

compdfkit(win) - 测量Demo 多边形选中状态

zhuyi 1 year ago
parent
commit
d014bf9844
1 changed files with 29 additions and 0 deletions
  1. 29 0
      Demo/Examples/Compdfkit_Tools/Measure/MeasureControl.xaml.cs

+ 29 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureControl.xaml.cs

@@ -1,4 +1,5 @@
 using ComPDFKit.Measure;
+using ComPDFKit.PDFAnnotation;
 using Compdfkit_Tools.Helper;
 using Compdfkit_Tools.PDFControl;
 using ComPDFKitViewer;
@@ -121,22 +122,50 @@ namespace Compdfkit_Tools.Measure
                         LineMeasureArgs LineArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.LineMeasure).First() as LineMeasureArgs;
                         panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
                         measurePropertyControl.SetPropertyForMeasureCreate(LineArgs, e);
+                        SetInfoPanelVisble(true, false);
+                        SetMeasureInfoPanel(LineArgs.GetPDFAnnot());
                         break;
                     case AnnotArgsType.PolygonMeasure:
                         PolygonMeasureArgs polygonArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.PolygonMeasure).First() as PolygonMeasureArgs;
                         panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
                         measurePropertyControl.SetPropertyForMeasureCreate(polygonArgs, e);
+                        SetInfoPanelVisble(true, false);
+                        SetMeasureInfoPanel(polygonArgs.GetPDFAnnot());
                         break;
 
                     case AnnotArgsType.PolyLineMeasure:
                         PolyLineMeasureArgs polyLineArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.PolyLineMeasure).First() as PolyLineMeasureArgs;
                         panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
                         measurePropertyControl.SetPropertyForMeasureCreate(polyLineArgs, e);
+                        SetInfoPanelVisble(true, false);
+                        SetMeasureInfoPanel(polyLineArgs.GetPDFAnnot());
                         break;
                 }
             }
         }
 
+        private void SetMeasureInfoPanel(CPDFAnnotation cPDFAnnotation)
+        {
+            CPDFPolygonAnnotation Annot = cPDFAnnotation as CPDFPolygonAnnotation;
+
+            double Area = Annot.GetMeasureValue(CPDFCaptionType.CPDF_CAPTION_AREA);
+            double inch = MeasureSetting.GetMeasurePDFArea(Area);
+            double Length = Annot.GetMeasureValue(CPDFCaptionType.CPDF_CAPTION_LENGTH);
+            double currentInch = MeasureSetting.GetMeasurePDFLength(Length);
+
+            MeasureEventArgs measureEvent = new MeasureEventArgs();
+            measureEvent.RulerTranslateUnit = MeasureSetting.RulerTranslateUnit;
+            measureEvent.RulerTranslate = MeasureSetting.RulerTranslate;
+            measureEvent.RulerBase = MeasureSetting.RulerBase;
+            measureEvent.RulerBaseUnit = MeasureSetting.RulerBaseUnit;
+            measureEvent.Precision = MeasureSetting.Precision;
+            measureEvent.Type = CPDFMeasureType.CPDF_AREA_MEASURE;
+            measureEvent.Distance = string.Format("{0}{1}", MeasureSetting.GetPrecisionData(currentInch), MeasureSetting.RulerTranslateUnit);
+            measureEvent.Area = string.Format("{0}{1}", MeasureSetting.GetPrecisionData(inch), MeasureSetting.RulerTranslateUnit);
+
+            MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
+        }
+
         public void SetSettingsControl(CPDFDisplaySettingsControl cPDFDisplaySettingsControl)
         {
             displaySettingsControl = cPDFDisplaySettingsControl;