Как получить файл изображения из диаграммы Javafx (линейная диаграмма) без его рендеринга? - PullRequest
2 голосов
/ 19 июня 2019

Я хочу использовать средства JavaFx для создания диаграмм, которые будут включены в модуль генерации отчетов

Я прочитал некоторые фрагменты кода, которые используют метод снимка LineChart

// lineChart previously properly. It actually renders in a Window (on 
// another JavaFX application). But this test case doesn't display it.

WritableImage wi = lineChart.snapshot(new SnapshotParameters(), new WritableImage(250, 250));
File file = new File("CanvasImage.png");
try {
    ImageIO.write(SwingFXUtils.fromFXImage(wi, null), "png", file);
} catch (Exception s) {
}

Но когда я показываю изображение, оно ничего не показывает, только маленькая координатная ось в позиции 0,0.

1 Ответ

1 голос
/ 19 июня 2019

Если вы хотите получить скриншот узла, сначала вы должны отрендерить его в сцене.Вам не нужно использовать эту сцену на любом этапе. Просто создайте сцену -> установите нужный вам узел -> и вызовите метод applyCss этого узла.Тогда вы можете сделать снимок.

Ниже код работал для меня.Я не отображал мою 'lineChart' в приложении.

Примечание: Просто убедитесь, что размер фиктивной сцены соответствует размеру вашего изображения.

LineChart<String, Number> lineChart= buildChart();
new Scene(lineChart,800, 600);
lineChart.applyCss();
WritableImage wi = lineChart.snapshot(new SnapshotParameters(), new WritableImage(800, 600));
File file = new File("CanvasImage.png");
try {
    ImageIO.write(SwingFXUtils.fromFXImage(wi, null), "png", file);
} catch (Exception s) {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...