我创建了一些注释,但是我不知道如何控制注释的大小和字体,命令setannotationsize
和setannotationfont
都询问了注释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 )
答案 0 :(得分:0)
使用任何创建注释的命令时,您都可以看到该方法的签名具有数字返回值,例如:
RealNumber CreateTextAnnotation(BasicImage img, RealNumber top, RealNumber left, String text)
返回的值是您的 annotationID 。
DM脚本通常为初学者简化了包装程序命令,这些命令只公开了部分功能。例如,简化的Get/Set...Note()
类型的命令就是这种情况。对于您提到的注释命令也是如此。这些简化的命令使仅用一个命令即可完成简单的事情,但是如果您需要更多的命令,则可以使用适当的“基础”脚本对象和对象层次结构。
注释实际上是
Component
对象,因此您需要参考components
上的帮助部分以获取所需的所有命令。
(在底部)您会找到
之类的命令 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
实际上只是一个数字数组,所以可以用不同的方式显示:例如,以RasterDisplay
或SpreadSheetDisplay
或SurfacePlotDisplay
的形式显示。
您真正要做的是在图像的显示中添加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 )