我们正在用Java做一个图像处理项目。用户界面提供的工具包括:矩形选择和魔棒工具。
现在, 有一节课: 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这样的程序如何允许在同一图像/图层上使用多个工具?我该怎么办?
非常感谢包含组件的框图(显示数据和命令的流程)。