在java中为形状创建boundingBox - 用于选择,拖放,旋转,翻译

时间:2014-10-24 14:20:41

标签: java swing awt

我想创建一个边界框以选择一个形状。我有一个形状矢量和所有点的矢量。目标是在边界框内放置一些形状,然后我可以应用一些变换,例如在画布周围移动一些形状,旋转,调整大小等。

现在我专注于边框来选择和移动一些形状。其他转换适用于以后。

这是班级,我知道至少,我需要这个变量

public class BoundingBox {

int xmax;
int xmin;
int ymax;
int ymin;

public BoundingBox(Vector<Point> points) {

}

我已经实现了其他类,例如,我有一个编辑器面板

Vector<Shape> shapes;
// Current shape that is in construction (if any)
Shape currentShape;
// shape that is selected, if any
Shape selectedShape;

实现形状的类

protected Vector<Point> points;
protected boolean isAShapeBeingBuilt;   //is any shape being built?
protected boolean selected;             //is any shape selected?
protected ShapesEditorPanel parent;     // reference to the panel

显然,我无法将所有代码放在这里,但我希望通过这些信息可以帮助我。主要问题是如何在盒子内选择和移动一些形状!

1 个答案:

答案 0 :(得分:1)

首先,不要使用Vector,因为您的代码在单个线程上运行。改为使用ArrayList。

然后,如果要查找边界框,则需要创建一个矩形,对角线由点(smallestX,smallestY)和点(largestX,largestY)定义。迭代你的形状点找到x和y坐标的最小值和最大值。