如何拍摄快照从不在场景中的节点

时间:2014-05-11 09:29:17

标签: javafx-8

情况就是这样:

我在窗格中添加了MeshPointLight,我想从窗格中获取快照并在图像视图中显示结果。但它只有在我将窗格添加到场景时才有效。

有没有办法从未添加到场景的节点拍摄快照?

1 个答案:

答案 0 :(得分:6)

根据Node.snapshot

的文件记录
  

注意:为了使CSS和布局正常运行,节点必须是场景的一部分(场景可以附加到舞台,但不一定是)。

您可以创建新场景而不将其附加到舞台,甚至不显示它:

WritableImage writableImage = new WritableImage(1000, 600);

// here is your node such as PointLight
new Circle(200, 200, 50).snapshot(null, writableImage);

new Scene(chartVH, 1000, 600);
chartVH.snapshot(null, writableImage);
File outFile = new File("/tmp/aa.png");
System.out.println(outFile);
try {
    ImageIO.write(SwingFXUtils.fromFXImage(writableImage, null), "png", outFile);
} catch (IOException e) {
    e.printStackTrace();
}