是否有用于编写绘图程序的Java库?

时间:2011-03-28 15:08:46

标签: java user-interface drawing

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

为了使标记过程更容易,重要的是程序提供一些类似于绘制程序的基本工具/功能,如MS Paint,例如,撤消/重做,标记(画笔)宽度和区域填充。 / p>

是否有任何Java库提供编写绘图程序的组件?

4 个答案:

答案 0 :(得分:10)

我建议你看一下ImageJ。最大的优点是它在医疗领域的根源,它可以通过自定义插件进行扩展。 以下部分取自ImageJ Wikipedia条目。

  

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

如果您没有找到符合您需求的功能,那么您可以编写自己的插件。

  

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

我可以预见的唯一问题是您需要提供的额外内容以及您要实施的功能。

如果您想避免上述问题,请查看@Zack's答案。除此之外,还要看看这些:

  1. Flood fill using a stack
  2. Add an undo/redo function to your Java apps with Swing
  3. Java 2D Samples - Java2s

答案 1 :(得分:7)

Processing可让您在Java中绘制形状,设置线条粗细和颜色,显示图像以及执行许多其他绘图功能。它可以用作Java库并集成到Swing应用程序中。

以下是一些示例处理代码:

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 :(得分:2)

如果您正在寻找桌面应用,您可能会使用Swing。

特别是在画布上绘图时,请参阅Java 2D API

可以使用Command design pattern处理撤消/重做。

答案 3 :(得分:1)

从eclipse中查看gef and draw 2d。 Draw2D提供了在swt上渲染图形的功能。 GEF提供了MVC框架以及undo / redo的命令框架。有一个学习曲线,但GEF真的很强大。