Я пытаюсь создать представление презентации для своего приложения Drawing, где видна только панель чертежа (панель). Таким образом, пользователь может отображать представление презентации на проекторе, имея фактическую панель рисования и инструменты на ПК.Представление презентации JavaFX8 (дублирующаяся область и содержимое)
Мой текущий подход - создать снимок с панели в каждом кадре и отобразить его в ImageView на втором этапе.
public void startStream(){
new AnimationTimer() {
@Override
public void handle(long now) {
WritableImage image = drawingPane.snapshot(new SnapshotParameters(), null);
stream.setImage(image);
}
}.start();
final Screen screen = Screen.getPrimary();
final Stage stage = new Stage();
StackPane root = new StackPane();
root.getChildren().add(stream);
Scene scene = new Scene(root, drawingPane.getWidth(), drawingPane.getHeight());
stage.setScene(scene);
stage.setTitle("streaming stage");
Rectangle2D bounds = screen.getBounds();
System.out.println(bounds);
stage.setX(bounds.getMinX() + (bounds.getWidth() - 300)/2);
stage.setY(bounds.getMinY() + (bounds.getHeight() - 200)/2);
stage.show();
}
проблема здесь есть много ОЗУ, например 800 МБ, а также на 30% больше использования ЦП. Я могу понять, что создание изображения на каждом кадре неэффективно, поэтому я хотел бы спросить, есть ли способ повысить эффективность этой работы.
Также, если есть лучший подход/решение этой функции, я был бы благодарен за это.
спасибо, это сбило использование процессора до 10% и использования памяти до менее 350 МБ – Murdoc