為了練習JavaFX,我構(gòu)建了一個繪制Sierpinski Triangles的簡單應(yīng)用程序。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實現(xiàn)存在根本錯誤。
2 回答

紅顏莎娜
TA貢獻1842條經(jīng)驗 獲得超13個贊
首先,我按照建議應(yīng)用了分離的“背景”畫布,沒有進行臨時更新。完成繪制后,我使用快照將背景畫布復制到顯示的畫布。這可以正常工作,并且可能具有更好的整體結(jié)構(gòu)。它仍然不能幫助我解決計算時間與實際時間之間的差異。
添加回答
舉報
0/150
提交
取消