JavaFX:将窗格视图保存到图像

ary*_*naq 3 java javafx

假设我在 上有 N 层StackPane,我在 上进行混合、绘图、图像、矩形等StackPane。我将如何保存结果?即我的屏幕上显示的内容StackPane

一般来说,假设我有任何可绘制的 JavaFX 元素,我将如何将该特定元素绘制到图像文件中。

我知道 swing 会提供它来getGraphics()直接绘制到图像的像素缓冲区,但我找不到任何类似的NodePane

小智 7

您可以获取snapshot其中的一个Node并将其保存到文件中

涵盖以下内容:使用 JavaFX 拍摄快照!


我倾向于使用类似下面的东西:

public void captureAndSaveDisplay(){
    FileChooser fileChooser = new FileChooser();

    //Set extension filter
    fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("png files (*.png)", "*.png"));

    //Prompt user to select a file
    File file = fileChooser.showSaveDialog(null);

    if(file != null){
        try {
            //Pad the capture area
            WritableImage writableImage = new WritableImage((int)getWidth() + 20,
                    (int)getHeight() + 20);
            snapshot(null, writableImage);
            RenderedImage renderedImage = SwingFXUtils.fromFXImage(writableImage, null);
            //Write the snapshot to the chosen file
            ImageIO.write(renderedImage, "png", file);
        } catch (IOException ex) { ex.printStackTrace(); }
    }
}
Run Code Online (Sandbox Code Playgroud)