情况是这样的:

我在 Pane 中添加了MeshPointLight,我想从 Pane 中拍摄快照并在 ImageView 中显示结果。但是仅当我将 Pane 添加到场景时它才起作用。

有什么方法可以从尚未添加到场景的节点获取快照?

最佳答案

根据Node.snapshot的文档



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

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();
}

10-04 21:10