Нет, нет. Холст самый быстрый.
Вы не предоставили MCVE. Я просто попробовал простое приложение. Работает довольно быстро, 4000 дуг, нарисованных в 6 мс. Окно приложения появится немедленно. Вот код:
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.paint.Color;
import javafx.scene.shape.ArcType;
import javafx.stage.Stage;
public class ArcTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Canvas canvas = new Canvas(300, 250);
GraphicsContext gc = canvas.getGraphicsContext2D();
root.getChildren().add(canvas);
primaryStage.setScene(new Scene(root));
primaryStage.show();
drawShapes(gc);
}
private void drawShapes(GraphicsContext gc) {
long time = System.currentTimeMillis();
gc.setFill(Color.GREEN);
gc.setStroke(Color.BLUE);
gc.setLineWidth(5);
for(int i=0; i < 4000; i++) {
gc.strokeArc(10, 160, 30, 30, 45, 240, ArcType.OPEN);
}
System.out.println(System.currentTimeMillis() - time);
}
}
Если вы не предоставите код с дополнительной информацией (BlendMode и т.д.), это трудно, чтобы помочь вам.
Возможно, встроенный графический редактор холста JavaFX Performace Optimizer понимает, что чертеж 4000 раз идентичной дуги может быть заменен одним здесь :-) – mipa
Спасибо. Я пробовал ваш исходный код, и это быстро для 4000 дуг. Проблема в том, что я ошибся с количеством дуг. Я рисую не только 4000 дуг, мне приходится рисовать 70 000 дуг. И для этого ваш исходный код также медленный. Я думаю, что нет лучшего решения? – jojo2100
Пожалуйста, попробуйте свою тестовую программу с 70 000 дугами. Вы увидите, что код завершен через 25 миллисекунд, но рендеринг Java имеет очень долгую задержку. – jojo2100