LineChart JavaFX -saving to png - 如何控制大小

时间:2016-08-21 20:54:20

标签: javafx png linechart

我无法弄清楚如何控制保存到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

1 个答案:

答案 0 :(得分:2)

尝试在显示窗口后保存图像,因为布局和尺寸是根据需要计算的,并且之前可能不会给出相同的值。

另一种解决方案当然是明确设置节点的首选大小。

xyChart.setPrefWidth(...);
xyChart.setPrefHeight(...);

绑定没有帮助的原因是因为窗口本身还没有计算出的大小,如前所述。