ImageJ:如何在GenericDialog中重新绘制图像?

时间:2016-05-21 08:55:36

标签: plugins awt imagej

在我的ImageJ插件中,我显示了一个GenericDialog,它附有一堆图像,如下所示:

// global:
ColorProcessor cp = new ColorProcessor(50, 50); // new ColorProcessor
ImagePlus ip;

public void run(ImageProcessor ip) {
  GenericDialog gdiag = new GenericDialog("Foo"); // new Dialolg

  gdiag.addDialogListener(this); // adding Listener
  gdiag.addMessage("Lorem Ipsum"); // adding Message
  gdiag.addSlider("Bar", 1, 360, 1); // adding Slider

  Color c = new Color(r, g, b);
  cp.setColor(tarColor);
  cp.fill();
  ip = new ImagePlus("fooimg", cp);

  gdiag.addImage(ip);
  gdiag.showDialog();
}

我保留了对Colorprocessor和ImagePlus的引用。当滑块在GenericDialog上移动时,我的dialogItemChanged()事件会触发。在这里,我更改图像上的颜色:

public boolean dialogItemChanged(GenericDialog gd, AWTEvent event) {
  float fooVal = (float) ((Scrollbar)(gd.getSliders().get(0))).getValue();

  // calculating color based on fooVal ...

  Color selColor = new Color(r, g, b);
  cp.setColor(selColor);
  cp.fill();
}

现在,当我运行此图像时,图像中的颜色不会更新。只有当我更改对话框的大小并在图像上移动边框时,颜色才会正确显示。

如何强制对话重绘?

我尝试了很多不同的更新&重新粉刷,我没有选择。

1 个答案:

答案 0 :(得分:2)

Wayne Rasband在ImageJ的1.51b12每日版本中增加了这项功能;见his response on the ImageJ mailing list,这个问题是交叉发布的。