我们正在用 Java 做一个图像处理项目。UI 提供了如下工具:矩形选择和魔棒工具。
现在,有一个类: ImageView:
/*Other classes can set image, this class will draw the image*/
public class ImageView extends JPanel{
/*It resizes the image to fit the panel and draws the image on the panel.*/
public void setImage(BufferedImage image){/*code*/}
}
每个工具都被视为一个单独的类,扩展ImageView。例如: 矩形选择工具:
/*It has a function which allows the user to draw rectangle around the image, I am not going to write the code here because it is long and unnecessary*/
public class ResizableRectangleView extends ImageView {
/*It returns the rectangle drawn by the user*/
public Rectangle getRectange(){return rectangle;}
}
另一个类UIController根据用户选择的工具创建“工具”。然后在 GUI 中显示 JPanel(工具或视图)(例如:ResizableRectangleView 或其他一些视图)。然后用户可以绘制矩形(在 ResizableRectangleView 的情况下)。
对于每个工具,都会有一个单独的类。每当用户选择工具时,都会创建一个新对象,向该工具提供图像,然后将工具(视图)添加到 UI。
我不喜欢这种方法。我的问题是,像 Gimp 和 Photoshop 这样的程序如何允许在同一个图像/图层上使用多个工具?我应该如何进行?
非常感谢带有组件的框图(显示数据和命令的流)。