本页内容
调整已存在的测量注释
对于已经存在的测量注释,可以重新设置比例尺,单位,精确度等测量相关信息,而无需重新绘制该注释。
以线段测量工具为例,您可以通过以下步骤,调整已存在的测量注释的属性:
AnnotActiveHandler
返回的数据中,线段测量工具到的注释对象CPDFAnnotation
的Type
参数为C_ANNOTATION_TYPE.C_ANNOTATION_LINE
,据此将CPDFAnnotation
类型的线段测量工具转换为CPDFLineAnnotation
对象。- 调用
IsMersured
方法判断该对象是否为测量工具,然后调用GetDistanceMeasure
方法,获取该注释对应的CPDFDistanceMeasure
对象。 - 从
CPDFDistanceMeasure
对象中获取到MeasureInfo
,并对MeasureInfo
赋值。 - 调用
CPDFDistanceMeasure
的SetMeasureInfo
,SetMeasureScale
,UpdateAnnotMeasure
完成参数更新。 - 最后调用
CPDFAnnotation
的UpdateAp
方法更新注释外观,再调用args.Draw
更新绘制。
以下是调整已存在的测量注释的示例代码:
c#
//args为AnnotCommandHandler传递过来的对象
CPDFAnnotation pdfAnnot = args.GetPDFAnnot();
switch (pdfAnnot.Type)
{
case C_ANNOTATION_TYPE.C_ANNOTATION_LINE:
{
// 将 CPDFAnnotation 类型的线段测量工具转换为 CPDFLineAnnotation 对象。
CPDFLineAnnotation lineAnnot = (CPDFLineAnnotation)pdfAnnot;
// 判断该对象是否为测量工具。
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();
// 更新绘制。
args.Draw();
}
}
break;
}