用钢笔画自由泳时,JavaFX在画布上的表现很慢

用钢笔画自由泳时,JavaFX在画布上的表现很慢,java,canvas,javafx,Java,Canvas,Javafx,我在这里尝试制作JavaFX应用程序的代码,该应用程序允许我的触控笔在画布上绘制: 在画布上画画时,表现非常痛苦。它将冻结半秒钟,然后开始绘图。只有在它开始绘图之后,它才是好的。然而,当你第一次按下鼠标/笔时,延迟是相当残酷的,使它无法使用 以下是我使用的代码: import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.canva

我在这里尝试制作JavaFX应用程序的代码,该应用程序允许我的触控笔在画布上绘制:

在画布上画画时,表现非常痛苦。它将冻结半秒钟,然后开始绘图。只有在它开始绘图之后,它才是好的。然而,当你第一次按下鼠标/笔时,延迟是相当残酷的,使它无法使用

以下是我使用的代码:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.effect.BoxBlur;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.shape.StrokeLineJoin;
import javafx.stage.Stage;

public class Test extends Application {

    private GraphicsContext gc;

    @Override
    public void start(Stage stage) {
        Canvas canvas = new Canvas(500, 500);
        canvas.setOnMouseDragged(e -> {
            gc.lineTo(e.getX(), e.getY());
            gc.stroke();
        });
        canvas.setOnMousePressed(e -> gc.moveTo(e.getX(), e.getY()));

        gc = canvas.getGraphicsContext2D();
        gc.setLineCap(StrokeLineCap.ROUND);
        gc.setLineJoin(StrokeLineJoin.ROUND);
        gc.setLineWidth(1);

        BoxBlur blur = new BoxBlur();
        blur.setWidth(1);
        blur.setHeight(1);
        blur.setIterations(1);
        gc.setEffect(blur);

        Group root = new Group(canvas);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
        stage.setFullScreen(true);
    }

    public static void main(String[] args) {
        launch(args);
    }
}
有没有办法解决性能问题?我的台式电脑非常坚固,可以运行高端游戏,所以它的性能不如我的电脑

注意:我还应该说,当您第一次在画布上按下鼠标时发生的延迟足以导致鼠标点击下降


编辑:为了确认它不是onmousempressed,我把它注释掉了,它没有任何帮助。

显然我的驱动程序与Java有冲突,这意味着JavaFX很好。在获得平板电脑公司的帮助和一些修复后,最新的驱动程序不会出现这种情况。

我没有发现您的代码有任何性能问题。我投票将此问题作为离题问题结束,因为这是用户错误(我自己),不再是一个有效的问题。