Skip to content

调整已存在的测量注释

对于已经存在的测量注释,可以重新设置比例尺,单位,精确度等测量相关信息,而无需重新绘制该注释。

以线段测量工具为例,您可以通过以下步骤,调整已存在的测量注释的属性:

  1. CPDFViewerTool 获取 CPDFAnnotation 对象,检查代表直线测量工具的 CPDFAnnotation 对象的 Type 参数。如果是 C_ANNOTATION_TYPE.C_ANNOTATION_LINE,则将直线测量工具的 CPDFAnnotation 类型转换为 CPDFLineAnnotation 对象。
  2. 使用 IsMersured 方法确定对象是否是测量工具。如果为 true,则调用 GetDistanceMeasure 方法获取相应的 CPDFDistanceMeasure 对象。
  3. CPDFDistanceMeasure 对象中读取 MeasureInfo 并赋值。
  4. 调用 CPDFDistanceMeasureSetMeasureInfo, SetMeasureScaleUpdateAnnotMeasure 方法完成参数更新。
  5. 最后,调用 CPDFAnnotationUpdateAp 方法更新注释外观,然后调用 CPDFViewerUpdateAnnotFrame 方法更新绘图。

以下是调整已存在的测量注释的示例代码:

c#
 BaseAnnot baseAnnot = tool.GetCacheHitTestAnnot();
 CPDFAnnotation annot = baseAnnot.GetAnnotData().Annot;
 switch (annot.Type)
 {
     case C_ANNOTATION_TYPE.C_ANNOTATION_LINE:
         {
             // 将直线测量工具的 CPDFAnnotation 类型转换为 CPDFLineAnnotation 对象。
             CPDFLineAnnotation lineAnnot = (CPDFLineAnnotation)annot;
             // 检查对象是否为测量工具。
             if (lineAnnot.IsMersured())
             {
                 // 获取注释对应的 CPDFDistanceMeasure 对象。
                 CPDFDistanceMeasure lineMeasure = lineAnnot.GetDistanceMeasure();

                 // 设置新的测量相关属性。
                 CPDFMeasureInfo measureInfo = lineMeasure.MeasureInfo;
                 measureInfo.Precision = measureSetting.GetMeasureSavePrecision();
                 measureInfo.RulerBase = (float)measureSetting.RulerBase;
                 measureInfo.RulerBaseUnit = measureSetting.RulerBaseUnit;
                 measureInfo.RulerTranslate = (float)measureSetting.RulerTranslate;
                 measureInfo.RulerTranslateUnit = measureSetting.RulerTranslateUnit;

                 // 完成参数更新。
                 lineMeasure.SetMeasureInfo(measureInfo);
                 lineMeasure.SetMeasureScale(
                     measureInfo.RulerBase,
                     measureInfo.RulerBaseUnit,
                     measureInfo.RulerTranslate,
                     measureInfo.RulerTranslateUnit);
                 lineMeasure.UpdateAnnotMeasure();

                 // 更新注释外观。
                 lineAnnot.UpdateAp();

                 // 更新绘图。
                 tool.GetCPDFViewer().UpdateAnnotFrame();
             }
         }
         break;

     case C_ANNOTATION_TYPE.C_ANNOTATION_POLYLINE:
     case C_ANNOTATION_TYPE.C_ANNOTATION_POLYGON:
         // To do.
         break;
 }