调整已存在的测量注释
对于已经存在的测量注释,可以重新设置比例尺,单位,精确度等测量相关信息,而无需重新绘制该注释。
以线段测量工具为例,您可以通过以下步骤,调整已存在的测量注释的属性:
- 从
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;
}