有没有适用于编写绘图程序的Java库?

12

我需要编写一个简单的Java GUI应用程序,基本上允许用户在CT肺部图像中标记区域。

为了使标记过程更加容易,重要的是该程序提供一些基本工具/功能,类似于MS Paint等绘画程序,比如撤销/重做、标记(刷子)宽度和区域填充等。

有没有Java库提供组件来编写绘画程序呢?


2
也许你可以试试 http://sourceforge.net/projects/jhotdraw/,我在大学的时候用过一个定制的“迷你”版本,效果很好 ;) - Lasse Espeholt
4个回答

10
我建议你看一下ImageJ。它最大的优点是其根源于医学领域,并且可以通过自定义插件进行扩展。
以下内容摘自ImageJ Wikipedia词条:

ImageJ是一个公共领域的基于Java的图像处理程序,由美国国立卫生研究院开发。ImageJ采用开放式架构,提供通过Java插件和可记录宏来实现可扩展性。

如果您找不到符合您需求的功能,它还允许您编写自己的插件。

用户编写的插件使得解决许多图像处理和分析问题成为可能,从三维活细胞成像到放射学图像处理,从多种成像系统数据比较到自动血液学系统。

我唯一能预见到的问题就是实现所需功能时需要附带大量额外的东西。
如果要避免上述问题,请查看@Zack's的回答。除此之外,还可以查看以下内容:
  1. 使用堆栈进行泛洪填充
  2. 向Java应用程序添加撤销/重做功能及Swing
  3. Java 2D示例 - Java2s

7

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类中找到。

点击可以放置一个红色圆圈。下面是生成的应用程序:

enter image description here


2

如果您想开发桌面应用程序,可能会使用Swing。

特别是绘制画布方面,请参阅Java 2D API

可以使用命令设计模式来处理撤销/重做。


1
对于那个-1,我很抱歉,但我猜Alceu知道Swing和Java2D。他想要的是一个在此基础上创建绘图应用程序基本功能的库。 - Guillaume
@Guillaume:我不确定我是如何从他的实际问题中猜到这一点的... - Zack Marrapese

1

请查看来自 Eclipse 的 GEF 和 Draw2D。Draw2D 提供了在 SWT 顶部渲染图形的能力。GEF 提供了 MVC 框架以及用于撤消/重做的命令框架。虽然有一定的学习曲线,但 GEF 真的非常强大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接