本页内容
调整已存在的测量注释
对于已经存在的测量注释,可以重新设置比例尺,单位,精确度等测量相关信息,而无需重新绘制该注释。
以线段测量工具为例,您可以通过以下步骤,调整已存在的测量注释的属性:
- 从
CPDFViewerTool
获取CPDFAnnotation
对象,检查代表直线测量工具的CPDFAnnotation
对象的Type
参数。如果是C_ANNOTATION_TYPE.C_ANNOTATION_LINE
,则将直线测量工具的CPDFAnnotation
类型转换为CPDFLineAnnotation
对象。 - 使用
IsMersured
方法确定对象是否是测量工具。如果为 true,则调用GetDistanceMeasure
方法获取相应的CPDFDistanceMeasure
对象。 - 从
CPDFDistanceMeasure
对象中读取MeasureInfo
并赋值。 - 调用
CPDFDistanceMeasure
的SetMeasureInfo
,SetMeasureScale
和UpdateAnnotMeasure
方法完成参数更新。 - 最后,调用
CPDFAnnotation
的UpdateAp
方法更新注释外观,然后调用CPDFViewer
的UpdateAnnotFrame
方法更新绘图。
以下是调整已存在的测量注释的示例代码:
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;
}