如何使用 canvas 预览当前绘制的对象?

How to give a preview of the currently drawn object with canvas?

我是 javafx 的新手,目前正在尝试制作我的第一个绘图程序。目前一切正常,但我遇到了问题。

我希望用户在绘制矩形时看到它的大小。

在 "setOnMouseDragged" 方法中,我尝试绘制矩形的当前大小,然后将其清除,因此可以进行预览。不幸的是,这使我无法在未清除的情况下绘制另一个矩形。

如何进行预览但仍绘制多个对象?

rootCenter.setOnMousePressed(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {

            oldPosX = event.getSceneX();
            oldPosY = event.getSceneY();


        }
    });

    rootCenter.setOnMouseDragged(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {

            newPosX = event.getSceneX();
            newPosY = event.getSceneY();

            gContext.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
            gContext.strokeRect(oldPosX, oldPosY, newPosX - oldPosX , newPosY -oldPosY);
        }
    });

    rootCenter.setOnMouseReleased(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {
            gContext.strokeRect(oldPosX, oldPosY, newPosX - oldPosX , newPosY -oldPosY);

        }
    });

}

canvas 不是您想要做的事情的正确工具。你为什么不使用场景图呢?使用场景图,您甚至不需要任何预览。您可以直接进行操作。在此处查看文档:https://docs.oracle.com/javafx/2/scenegraph/jfxpub-scenegraph.htm