我无法弄清楚如何控制保存到png的LineChart的大小。该图表在屏幕上看起来很棒,在它自己的窗口中,但在保存时它会垂直碾压。我试图弄清楚如何控制尺寸,但无济于事。它必须是一个简单的设置,但是......
任何帮助都将不胜感激。
使用以下代码,排除设置数据值的代码:
LineChart<Number, Number> xyChart = new LineChart<>(xAxis, yAxis);
StackPane layout = new StackPane();
layout.setPadding(new Insets(10, 10, 10, 10));
xyChart.prefWidthProperty().bind(window.widthProperty());
xyChart.prefHeightProperty().bind(window.heightProperty());
layout.getChildren().add(xyChart);
VBox mainVBox = new VBox();
mainVBox.getChildren().addAll(menuHBox, layout);
Scene scene = new Scene(mainVBox, 800, 600);
window.setScene(scene);
xyChart.setAnimated(false);
WritableImage snapShot = scene.snapshot(null);
try {
ImageIO.write(SwingFXUtils.fromFXImage(snapShot, null), "png", new File("test3.png"));
} catch (IOException e) {
}
屏幕上显示的图表是 window grab
而写的png文件是 upload of the png file
答案 0 :(得分:2)
尝试在显示窗口后保存图像,因为布局和尺寸是根据需要计算的,并且之前可能不会给出相同的值。
另一种解决方案当然是明确设置节点的首选大小。
xyChart.setPrefWidth(...);
xyChart.setPrefHeight(...);
绑定没有帮助的原因是因为窗口本身还没有计算出的大小,如前所述。