如何获取注释ID并设置注释的大小和字体?

时间:2019-08-10 09:05:32

标签: annotations dm-script

我创建了一些注释,但是我不知道如何控制注释的大小和字体,命令setannotationsizesetannotationfont都询问了注释ID,没有解释如何获取注释ID。

image img1:=getfrontimage()
img1.createtextannotation(50,50,"this is HRTEM image")


setAnnotationFont( Image, Number annotationID, String fontName ) 
void SetAnnotationSize( Image, Number annotationID, Number size )

1 个答案:

答案 0 :(得分:0)

简短答案:

  

使用任何创建注释的命令时,您都可以看到该方法的签名具有数字返回值,例如:

     

RealNumber CreateTextAnnotation(BasicImage img, RealNumber top, RealNumber left, String text)

     

返回的值是您的 annotationID


但是,故事还有更多……

DM脚本通常为初学者简化了包装程序命令,这些命令只公开了部分功能。例如,简化的Get/Set...Note()类型的命令就是这种情况。对于您提到的注释命令也是如此。这些简化的命令使仅用一个命令即可完成简单的事情,但是如果您需要更多的命令,则可以使用适当的“基础”脚本对象和对象层次结构。

  

注释实际上是Component对象,因此您需要参考components上的帮助部分以获取所需的所有命令。

F1 help

(在底部)您会找到

之类的命令

Component NewTextAnnotation( Number left, Number top, String text, Number size )

这些命令不返回ID,而是返回component本身。然后,您可以使用上述任何以component作为参数的命令来修改component,例如:

void ComponentSetForegroundColor( Component comp, Number red_i, Number green_i, Number blue_i )

但是如何将components添加到图像中?你不能因为image实际上只是一个数字数组,所以可以用不同的方式显示:例如,以RasterDisplaySpreadSheetDisplaySurfacePlotDisplay的形式显示。

您真正要做的是在图像的显示中添加component! 每个(显示的)image对象都有一个imageDisplay对象。因此,您将component添加到imageDisplay对象上。

现在,面向对象编码的优点在于imageDisplay个对象也是 component 个对象。因此,components上的帮助中的命令也适用于imageDisplays。这些命令包括获取/设置/添加/删除子级的命令。

总结:添加注释的完整过程是:创建注释(作为component)。获取image。从图像(也是imageDisplay)中获取component。将注释component作为子元素添加到imageDisplay component。这是一个示例:

image img := RealImage( "Test",4,512,512)
img.ShowImage()
imageDisplay disp = img.ImageGetImageDisplay(0)
component arrow = NewArrowAnnotation(110,110,280,400)
arrow.ComponentSetForeGroundColor(1,1,0)
disp.ComponentAddChildAtEnd( arrow )