我需要编写一个简单的Java GUI应用程序,基本上允许用户在CT肺部图像中标记区域。
为了使标记过程更加容易,重要的是该程序提供一些基本工具/功能,类似于MS Paint等绘画程序,比如撤销/重做、标记(刷子)宽度和区域填充等。
有没有Java库提供组件来编写绘画程序呢?
我需要编写一个简单的Java GUI应用程序,基本上允许用户在CT肺部图像中标记区域。
为了使标记过程更加容易,重要的是该程序提供一些基本工具/功能,类似于MS Paint等绘画程序,比如撤销/重做、标记(刷子)宽度和区域填充等。
有没有Java库提供组件来编写绘画程序呢?
如果您找不到符合您需求的功能,它还允许您编写自己的插件。ImageJ是一个公共领域的基于Java的图像处理程序,由美国国立卫生研究院开发。ImageJ采用开放式架构,提供通过Java插件和可记录宏来实现可扩展性。
我唯一能预见到的问题就是实现所需功能时需要附带大量额外的东西。用户编写的插件使得解决许多图像处理和分析问题成为可能,从三维活细胞成像到放射学图像处理,从多种成像系统数据比较到自动血液学系统。
Processing 是一种在 Java 中绘制图形、设置线条粗细和颜色、显示图片以及执行许多其他绘图功能的工具。它可以作为一个 Java 库使用,并集成到 Swing 应用程序中。
下面是一些 Processing 代码示例:
void setup() {
size(400, 400); // set window size to 400 x 400 pixels
PImage lungImg = loadImage("http://i.stack.imgur.com/gwyp0.jpg");
image(lungImg, 0, 0);
}
void draw() {
}
void mousePressed() {
noFill(); // no fill color for the circle
stroke(255, 0, 0); // set pen color to red
strokeWeight(5); // set line thickness to 5 pixels
// draw ellipse at mouse position, 50 pixels height & width (i.e. a circle)
ellipse(mouseX, mouseY, 50, 50);
}
这段代码可以在Processing IDE中自动运行,它还添加了一些语法糖。在底层是“真正的”Java;上面代码中的方法可以在PApplet类中找到。
点击可以放置一个红色圆圈。下面是生成的应用程序:
请查看来自 Eclipse 的 GEF 和 Draw2D。Draw2D 提供了在 SWT 顶部渲染图形的能力。GEF 提供了 MVC 框架以及用于撤消/重做的命令框架。虽然有一定的学习曲线,但 GEF 真的非常强大。