gpt4 book ai didi

JavaFX 与较大的 Canvas 尺寸存在巨大的滞后

转载 作者:行者123 更新时间:2023-12-01 08:01:01 25 4
gpt4 key购买 nike

这是一个模糊的问题,但我正在尝试使用 JavaFX Canvas 技术创建一个代码编辑器,但它对于我想要的速度来说非常慢。

以下代码为例

public class JavaFXApplication13 extends Application {


@Override
public void start(Stage primaryStage) {
BorderPane root = new BorderPane();
int extent = 6300;
System.out.println(System.getProperty("java.version"));
Canvas cvs = new Canvas(extent,extent);
ScrollPane scpn = new ScrollPane();
root.setTop(cvs);
scpn.setContent(root);

root.autosize();
scpn.autosize();
GraphicsContext ctx = cvs.getGraphicsContext2D();
for(int i = 0; extent / 300 > i; i++){
ctx.setFill(Color.RED);
ctx.fillRect(i*300, 0, 100, extent);
ctx.setFill(Color.BLUE);
ctx.fillRect(i*300+100, 0, 100, extent);
ctx.setFill(Color.GREEN);
ctx.fillRect(i*300+200, 0, 100, extent);
}
//// root.getChildren().add(btn);

Scene scene = new Scene(scpn, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}

}

如果您尝试左右滑动 Pane ,则在移动光标和滚动条和滚动 Pane 更新之间会有好几秒钟的时间。这和 Canvas 的大小有关,设置为6300,没什么。我可以打开记事本并获得百万级的线条高度,并且能够轻松绘制它们。

尝试在大尺寸 Canvas 上绘制时,性能更差,简单

 onKeyPress((a) -> drawText(a.getText(), ...));

处理需要几秒钟。

我想我想说的是,这样的表现正常吗?或者我应该放弃它并转向更强大的东西,例如 OpenGL?

最佳答案

代码编辑器应该是虚拟的,并且只绘制您在屏幕上看到的线条!所以恕我直言,你对 Canvas 的使用是完全不正确的!

Canvas 的核心可以看作是一个可以在其上绘制的缓冲图像,而在 OpenGL/Directx 端只能看到一个图像。

为什么要重新发明轮子呢?至少有 2 个开源 javafx 代码编辑器。请参阅https://tomasmikula.github.io/blog/http://tomsondev.bestsolution.at/2014/08/11/efxclipse-1-0-new-features-styledtext-control-to-build-a-code-editor-framework/

关于JavaFX 与较大的 Canvas 尺寸存在巨大的滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com