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

Eel*_*iya 7 javafx-8

情况就是这样:

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

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

ruX*_*ruX 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();
}
Run Code Online (Sandbox Code Playgroud)