Pārlūkot izejas kodu

compdfkit(win) - 测量Demo 禅道问题测量比例显示更改

liyuxuan 1 gadu atpakaļ
vecāks
revīzija
7ea88bce94

+ 24 - 0
Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFMeasureBarControl.xaml.cs

@@ -261,6 +261,12 @@ namespace Compdfkit_Tools.PDFControl
             pdfViewer?.SetToolParam(lineMeasureArgs);
             measureControl.SetMeasureInfoType(CPDFMeasureType.CPDF_DISTANCE_MEASURE);
             measureControl.SetInfoPanelVisble(true, false);
+            measureControl.SetMeasureScale(CPDFMeasureType.CPDF_DISTANCE_MEASURE,
+                string.Format("{0}{1}={2}{3}",
+                            MeasureSetting.RulerBase,
+                            MeasureSetting.RulerBaseUnit,
+                            MeasureSetting.RulerTranslate,
+                            MeasureSetting.RulerTranslateUnit));
             return lineMeasureArgs;
         }
 
@@ -279,6 +285,12 @@ namespace Compdfkit_Tools.PDFControl
             pdfViewer?.SetToolParam(polyLineMeasureArgs);
             measureControl.SetMeasureInfoType(CPDFMeasureType.CPDF_PERIMETER_MEASURE);
             measureControl.SetInfoPanelVisble(true, false);
+            measureControl.SetMeasureScale(CPDFMeasureType.CPDF_PERIMETER_MEASURE,
+               string.Format("{0}{1}={2}{3}",
+                           MeasureSetting.RulerBase,
+                           MeasureSetting.RulerBaseUnit,
+                           MeasureSetting.RulerTranslate,
+                           MeasureSetting.RulerTranslateUnit));
             return polyLineMeasureArgs;
         }
 
@@ -297,6 +309,12 @@ namespace Compdfkit_Tools.PDFControl
             pdfViewer?.SetToolParam(polygonMeasureArgs);
             measureControl.SetMeasureInfoType(CPDFMeasureType.CPDF_AREA_MEASURE);
             measureControl.SetInfoPanelVisble(true, false);
+            measureControl.SetMeasureScale(CPDFMeasureType.CPDF_AREA_MEASURE,
+              string.Format("{0}{1}={2}{3}",
+                          MeasureSetting.RulerBase,
+                          MeasureSetting.RulerBaseUnit,
+                          MeasureSetting.RulerTranslate,
+                          MeasureSetting.RulerTranslateUnit));
             return polygonMeasureArgs;
         }
 
@@ -316,6 +334,12 @@ namespace Compdfkit_Tools.PDFControl
             pdfViewer?.SetToolParam(rectPolygonMeasureArgs);
             measureControl.SetMeasureInfoType(CPDFMeasureType.CPDF_AREA_MEASURE);
             measureControl.SetInfoPanelVisble(true, false);
+            measureControl.SetMeasureScale(CPDFMeasureType.CPDF_AREA_MEASURE,
+             string.Format("{0}{1}={2}{3}",
+                         MeasureSetting.RulerBase,
+                         MeasureSetting.RulerBaseUnit,
+                         MeasureSetting.RulerTranslate,
+                         MeasureSetting.RulerTranslateUnit));
             return rectPolygonMeasureArgs;
         }
 

+ 22 - 5
Demo/Examples/Compdfkit_Tools/Measure/MeasureControl.xaml.cs

@@ -133,14 +133,14 @@ namespace Compdfkit_Tools.Measure
                         panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
                         measurePropertyControl.SetPropertyForMeasureCreate(LineArgs, e);
                         SetInfoPanelVisble(true, false);
-                        SetMeasureInfoPanel(LineArgs.GetPDFAnnot());
+                        SetMeasureInfoPanel(LineArgs.GetPDFAnnot(), LineArgs);
                         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());
+                        SetMeasureInfoPanel(polygonArgs.GetPDFAnnot(),polygonArgs);
                         break;
 
                     case AnnotArgsType.PolyLineMeasure:
@@ -148,13 +148,13 @@ namespace Compdfkit_Tools.Measure
                         panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
                         measurePropertyControl.SetPropertyForMeasureCreate(polyLineArgs, e);
                         SetInfoPanelVisble(true, false);
-                        SetMeasureInfoPanel(polyLineArgs.GetPDFAnnot());
+                        SetMeasureInfoPanel(polyLineArgs.GetPDFAnnot(),polyLineArgs);
                         break;
                 }
             }
         }
 
-        private void SetMeasureInfoPanel(CPDFAnnotation rawAnnot)
+        private void SetMeasureInfoPanel(CPDFAnnotation rawAnnot,AnnotHandlerEventArgs annotArgs=null)
         {
             if (rawAnnot == null)
             {
@@ -193,6 +193,10 @@ namespace Compdfkit_Tools.Measure
                         measureEvent.Precision = GetMeasureShowPrecision(measureInfo.Precision);
 
                         MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
+                        if(annotArgs!=null)
+                        {
+                            SettingPanel.UpdateArgsList =new List<AnnotHandlerEventArgs> { annotArgs};
+                        }
                     }
                 }
 
@@ -254,6 +258,10 @@ namespace Compdfkit_Tools.Measure
                         formatInfo.NumberDecimalDigits = Math.Abs(measureInfo.Precision).ToString().Length - 1;
                         measureEvent.Distance = showLenght.ToString("N", formatInfo) + measureInfo.RulerTranslateUnit;
                         MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
+                        if (annotArgs != null)
+                        {
+                            SettingPanel.UpdateArgsList = new List<AnnotHandlerEventArgs> { annotArgs };
+                        }
                     }
                 }
 
@@ -278,11 +286,15 @@ namespace Compdfkit_Tools.Measure
                         MeasureSetting.GetPrecisionData(currentInch),
                         MeasureSetting.RulerTranslateUnit);
                     measureEvent.Area = string.Format(
-                        "{0}{1}", 
+                        "{0} sq {1}", 
                         MeasureSetting.GetPrecisionData(inch), 
                         MeasureSetting.RulerTranslateUnit);
 
                     MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
+                    if (annotArgs != null)
+                    {
+                        SettingPanel.UpdateArgsList = new List<AnnotHandlerEventArgs> { annotArgs };
+                    }
                 }
             }
             catch (Exception e)
@@ -484,6 +496,11 @@ namespace Compdfkit_Tools.Measure
         {
             InfoPanel?.SetMeasureType(measureType);
         }
+
+        public void SetMeasureScale(CPDFMeasureType measureType, string scale)
+        {
+            InfoPanel?.SetMeasureScale(measureType,scale);
+        }
     }
 }
 

+ 32 - 3
Demo/Examples/Compdfkit_Tools/Measure/MeasureInfoPanel.xaml.cs

@@ -1,8 +1,10 @@
 using ComPDFKit.Measure;
 using ComPDFKitViewer.AnnotEvent;
+using ComPDFKitViewer.PdfViewer;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Drawing.Drawing2D;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -57,6 +59,24 @@ namespace Compdfkit_Tools.Measure
             InitializeComponent();
         }
 
+        internal void SetMeasureScale(CPDFMeasureType measureType, string scale)
+        {
+            switch (measureType)
+            {
+                case CPDFMeasureType.CPDF_DISTANCE_MEASURE:
+                    ScaleText.Text = scale;
+                    break;
+                case CPDFMeasureType.CPDF_PERIMETER_MEASURE:
+                    ScalePolyLineText.Text = scale;
+                    break;
+                case CPDFMeasureType.CPDF_AREA_MEASURE:
+                    ScalePolygonText.Text = scale;
+                    break;
+                default:
+                    break;
+            }
+        }
+
         public void SetMeasureType(CPDFMeasureType newType)
         {
             MeasureType=newType;
@@ -123,7 +143,10 @@ namespace Compdfkit_Tools.Measure
                         XText.Text=info.MousePos.X.ToString();
                         YText.Text=info.MousePos.Y.ToString();
                         ScaleText.Text = string.Format("{0}{1}={2}{3}",
-                            info.RulerBase, info.RulerBaseUnit, info.RulerTranslate, info.RulerTranslateUnit);
+                            info.RulerBase,
+                            info.RulerBaseUnit,
+                            info.RulerTranslate,
+                            info.RulerTranslateUnit);
                     }
                     break;
                 case CPDFMeasureType.CPDF_PERIMETER_MEASURE:
@@ -132,7 +155,10 @@ namespace Compdfkit_Tools.Measure
                         PrecisionPolyLineText.Text = info.Precision.ToString();
                         AnglePolyLineText.Text = info.Angle.ToString();
                         ScalePolyLineText.Text = string.Format("{0}{1}={2}{3}",
-                            info.RulerBase, info.RulerBaseUnit, info.RulerTranslate, info.RulerTranslateUnit);
+                            info.RulerBase,
+                            info.RulerBaseUnit,
+                            info.RulerTranslate,
+                            info.RulerTranslateUnit);
                     }
                     break;
                 case CPDFMeasureType.CPDF_AREA_MEASURE:
@@ -141,7 +167,10 @@ namespace Compdfkit_Tools.Measure
                         PrecisionPolygonText.Text = info.Precision.ToString();
                         AnglePolygonText.Text = info.Angle.ToString();
                         ScalePolygonText.Text = string.Format("{0}{1}={2}{3}",
-                            info.RulerBase, info.RulerBaseUnit, info.RulerTranslate, info.RulerTranslateUnit);
+                            info.RulerBase,
+                            info.RulerBaseUnit, 
+                            info.RulerTranslate,
+                            info.RulerTranslateUnit);
                     }
                     break;
                 default:

+ 1 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureSettingPanel.xaml.cs

@@ -130,6 +130,7 @@ namespace Compdfkit_Tools.Measure
                         }
                     }
                 }
+                ReturnToInfoPanel = false;
             }
             UpdateArgsList?.Clear();
             DoneEvent?.Invoke(this, e);