JavaFX 通过鼠标绘制形状
JavaFX Drawing Shapes via Mouse
有什么简单的方法可以通过移动鼠标来绘制一些形状吗?
更具体地说,我正在做一个屏幕截图程序,所以我想select以某种方式显示该区域。
我看到它就像在A点上按住鼠标键并实时移动到B点,在A点和当前点之间绘制矩形。
抱歉语言不好,英语不是我的母语。
在这种情况下,我使用了一个名为 scene 的 Scene 对象。这个或类似的东西应该可以做你想要的,也许你必须在 dragBox.setTranslate
和 dragBox.setWidth
/ .setHeight
之间切换,在你向上或向左而不是向下拖动的情况下并且正确。
Rectangle dragBox = new Rectangle(0, 0, 0, 0);
dragBox.setVisible(false);
scene.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if(mouseEvent.getEventType() == MouseEvent.MOUSE_CLICKED){
dragBox.setVisible(true);
dragBox.setTranslateX(mouseEvent.getX());
dragBox.setTranslateY(mouseEvent.getY());
}
if(mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED && dragBox.isVisible()){
dragBox.setWidth(mouseEvent.getX() - dragBox.getTranslateX());
dragBox.setHeight(mouseEvent.getY() - dragBox.getTranslateY());
}
if(mouseEvent.getEventType() == MouseEvent.MOUSE_RELEASED)
dragBox.setVisible(false);
}
});
您还必须确保将 dragBox 添加到场景中显示的 Pane 中,否则 dragBox 将根本不可见。
有什么简单的方法可以通过移动鼠标来绘制一些形状吗?
更具体地说,我正在做一个屏幕截图程序,所以我想select以某种方式显示该区域。 我看到它就像在A点上按住鼠标键并实时移动到B点,在A点和当前点之间绘制矩形。
抱歉语言不好,英语不是我的母语。
在这种情况下,我使用了一个名为 scene 的 Scene 对象。这个或类似的东西应该可以做你想要的,也许你必须在 dragBox.setTranslate
和 dragBox.setWidth
/ .setHeight
之间切换,在你向上或向左而不是向下拖动的情况下并且正确。
Rectangle dragBox = new Rectangle(0, 0, 0, 0);
dragBox.setVisible(false);
scene.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if(mouseEvent.getEventType() == MouseEvent.MOUSE_CLICKED){
dragBox.setVisible(true);
dragBox.setTranslateX(mouseEvent.getX());
dragBox.setTranslateY(mouseEvent.getY());
}
if(mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED && dragBox.isVisible()){
dragBox.setWidth(mouseEvent.getX() - dragBox.getTranslateX());
dragBox.setHeight(mouseEvent.getY() - dragBox.getTranslateY());
}
if(mouseEvent.getEventType() == MouseEvent.MOUSE_RELEASED)
dragBox.setVisible(false);
}
});
您还必须确保将 dragBox 添加到场景中显示的 Pane 中,否则 dragBox 将根本不可见。