JavaFX 通过鼠标绘制形状

问题描述 投票:0回答:2

有没有简单的方法通过移动鼠标来绘制某种形状?

更具体地说,我正在做一个屏幕截图程序,所以我想选择以某种方式显示该区域。 我认为这就像在 A 点上按住鼠标键并将其实时移动到 B 点,在 A 点和当前点之间绘制矩形。

抱歉语言不好,英语不是我的母语。

javafx drawing
2个回答
1
投票

在本例中我使用了一个名为 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将根本不可见。


© www.soinside.com 2019 - 2024. All rights reserved.