1

所以我正在使用 JavaFX 开发一个需要在画布上显示 LateX 公式的应用程序。我设法使用此线程的修订版做到了这一点:在 javaFX 中运行 swing 应用程序。所以我的下一步是在鼠标移动时在公式下画一条线,这应该很容易,但是这条线根本不显示!我终于能够发现问题:

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);
        }
});

这是我设置画布的地方:

 public void initializeCanvas() {
        this.g2 = new FXGraphics2D(canvas.getGraphicsContext2D());
        this.g2.scale(20, 20);

        // create a formula
        TeXFormula formula = new TeXFormula("x=\\frac{-b \\pm \\sqrt {b^2-4ac}}{2a}");
        TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 20);

        // the 'Box' seems to be the thing we can draw directly to Graphics2D
        this.box = icon.getBox();
    }  

最后我画公式的地方:

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

0 回答 0