Canvas JavaFX中的FXGraphics2D比例和画布绘制

Canvas JavaFX中的FXGraphics2D比例和画布绘制,canvas,javafx,latex,graphicscontext,Canvas,Javafx,Latex,Graphicscontext,因此,我正在使用JavaFX开发一个应用程序,它需要在画布上显示LateX公式。我使用此线程的修订版本成功地做到了这一点:。 因此,我的下一步是在鼠标移动时在公式下画一条线,这应该很容易,但这条线根本不显示!我终于发现了问题: this.g2 = new FXGraphics2D(canvas.getGraphicsContext2D()); this.g2.scale(20, 20); 当我缩放FXGraphics2D对象时,除了公式之外,我不能在画布上绘制任何东西。如果我对代码进行注释,我

因此,我正在使用JavaFX开发一个应用程序,它需要在画布上显示LateX公式。我使用此线程的修订版本成功地做到了这一点:。 因此,我的下一步是在鼠标移动时在公式下画一条线,这应该很容易,但这条线根本不显示!我终于发现了问题:

this.g2 = new FXGraphics2D(canvas.getGraphicsContext2D());
this.g2.scale(20, 20);
当我缩放FXGraphics2D对象时,除了公式之外,我不能在画布上绘制任何东西。如果我对代码进行注释,我可以画出界限,但不幸的是公式变得非常非常小。有人有办法解决这个问题吗? 以下是显示该行的代码:

canvas.addEventHandler(MouseEvent.MOUSE_MOVED, new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent t) {
            GraphicsContext gc = canvas.getGraphicsContext2D();
            gc.setFill(Color.GREEN);
            gc.setStroke(Color.BLUE);
            gc.setLineWidth(5);
            gc.strokeLine(20, 80, 50, 80);
        }
});
最后,我画了一个公式:

private void draw() { 
        double width = getWidth(); 
        double height = getHeight();
        getGraphicsContext2D().clearRect(0, 0, width, height);
        this.box.draw(g2, 1, 5);
    }

你能发布FXGraphics2D实现的部分吗?也可能是因为GraphicsContext太大(比例为20,20太大),所以线条可能超出了画布的范围。你想通过缩放来实现什么?@steven你说得对!如果我按2而不是20进行缩放,会出现一条直线,但非常大,而公式非常小。我仍在努力解决这个问题。我的解决方案是不缩放画布,而是以某种方式独立地更改TeX对象的大小。您能发布FXGraphics2D实现的部分吗?也可能是因为GraphicsContext太大(比例为20,20太大),所以线条可能超出了画布的范围。你想通过缩放来实现什么?@steven你说得对!如果我按2而不是20进行缩放,会出现一条直线,但非常大,而公式非常小。我仍在努力解决这个问题,我的解决方案是不缩放画布,而是独立地改变TeX对象的大小。
private void draw() { 
        double width = getWidth(); 
        double height = getHeight();
        getGraphicsContext2D().clearRect(0, 0, width, height);
        this.box.draw(g2, 1, 5);
    }