我是 ImageJ 宏的新手,我想在斐济使用宏。宏的代码来自这个来源。
macro "MultiRoiMove Tool - C00cT0f16M" {
if (RoiManager.selected<2) exit();
indexes=split(call("ij.plugin.frame.RoiManager.getIndexesAsString"));
roiManager("Combine");
getCursorLoc(x, y, z, modifiers);
Roi.getBounds(x0, y0, width, height);
while(modifiers&16>0) {
getCursorLoc(x1, y1, z, modifiers);
Roi.move(x0+x1-x, y0+y1-y);
}
roiManager("select", indexes);
roiManager("translate", x1-x, y1-y);
}
我已经下载了代码并将其保存为文本文件。然后我通过转到插件>宏>运行来运行宏。我使用的 ImageJ 版本是 1.53j。
但是,当我运行宏时,出现以下错误:
我在 ImageJ论坛上在线看到这个宏适用于其他人。我已经进行了一些调试,并且知道我收到了错误,因为当我运行宏时代码没有进入 while 循环,所以函数没有x1
返回值getCursorLoc
。
但我不是如何让代码进入while循环。有谁知道我是否必须在运行宏之前单击特定的东西?在我看来,当鼠标修饰符事件发生时,代码将进入 while 循环(因为 getCursorLoc 函数返回的修饰符参数是鼠标事件修饰符标志)。任何帮助表示赞赏。