目前我有一个项目用于绘制带有线条和图像的房间,用户可以通过点击代表他们想要添加的内容的按钮来选择。 I.E.如果他们想要淋浴,则按下淋浴按钮并在窗格中显示图像。淋浴可以调整大小并在窗格中移动。用户还可以使用线条绘制对象或墙壁。线条可以调整大小,旋转或移动。我现在正试图让这些对象相互交互。假设用户使用线条来制作对象,当线条靠近另一个对象时,被移动的线条会捕捉到另一个对象。我找到了一个拥有SnapLineSnapResult的第三方库,但我没有看到有人使用它的任何东西。这是桌面JavaFX可用的东西,还是触摸操作,是否有人有代码建模或其他解决方案?
如果我可以使用这个类,那么我的代码行如下:
line.setOnMouseDragged((MouseEvent event1) -> {
// in resize region
if (isInResizeZoneLine(line, event1)) {
// adjust line
line.setEndX(event1.getX());
}
// in movable region
else {
Point2D currentPointer = new Point2D(event1.getX(), event1.getY());
if (bound.getBoundsInLocal().contains(currentPointer)) {
/*--------*/ // potential place for if (near other object to be snapped)
double lineWidth = line.getEndX() - line.getStartX();
line.setStartY(currentPointer.getY());
line.setEndY(currentPointer.getY());
line.setStartX(currentPointer.getX() - lineWidth/2);
line.setEndX(currentPointer.getX() + lineWidth/2);
}
}
});