为了账号安全,请及时绑定邮箱和手机立即绑定

定时JavaFX Canvas应用程序

定时JavaFX Canvas应用程序

千巷猫影 2019-12-06 15:21:53
为了练习JavaFX,我构建了一个绘制Sierpinski Triangles的简单应用程序。import javafx.application.Application;import javafx.application.Platform;import javafx.concurrent.Task;import javafx.geometry.Insets;import javafx.geometry.Point2D;import javafx.geometry.Pos;import javafx.scene.Scene;import javafx.scene.canvas.Canvas;import javafx.scene.canvas.GraphicsContext;import javafx.scene.layout.AnchorPane;import javafx.scene.layout.BorderPane;import javafx.scene.layout.Pane;import javafx.scene.paint.Color;import javafx.stage.Stage;public class SierpinskiTriangles extends Application {    private final int PADDING = 5;    private static int numberOfLevels;    public static void launch(String... args){        numberOfLevels = 8;        if((args != null) && (args.length > 0)) {            int num = -1;            try {                num = Integer.parseInt(args[0]);            } catch (NumberFormatException ex) {                            ex.printStackTrace();                return;            }            numberOfLevels = (num > 0) ? num : numberOfLevels;        }        Application.launch(args);    }    @Override    public void start(Stage stage) {        stage.setOnCloseRequest((ae) -> {            Platform.exit();            System.exit(0);        });        stage.setTitle("Sierpinski Triangles (fx)");        BorderPane mainPane = new BorderPane();        mainPane.setPadding(new Insets(PADDING));        Pane triPanel = new Triangles();        BorderPane.setAlignment(triPanel, Pos.CENTER);        mainPane.setCenter(triPanel);        Scene scene = new Scene(mainPane);        stage.setScene(scene);        stage.centerOnScreen();        stage.setResizable(false);        stage.show();    }输出是预期的: 三角形我遇到的问题:一种。的时间输出updateGraphics()显示很早(在我的机器上为8秒)完成了三角形的绘制,因此无法测量完整的过程。我该如何改善呢?b。在我的机器上,面板完全绘制需要30-35秒。类似的挥杆动作需要4秒钟。这可能表明我的javafx实现存在根本错误。
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

首先,我按照建议应用了分离的“背景”画布,没有进行临时更新。完成绘制后,我使用快照将背景画布复制到显示的画布。这可以正常工作,并且可能具有更好的整体结构。它仍然不能帮助我解决计算时间与实际时间之间的差异。

查看完整回答
反对 回复 2019-12-06
  • 2 回答
  • 0 关注
  • 837 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信