2016-06-25 50 views
2

假設我在StackPane上有N層,我在StackPane上做了混合,繪圖,圖像,矩形等。我將如何去保存結果?即什麼顯示在我的屏幕上StackPaneJavaFX:將窗格的視圖保存爲圖像

一般來說,假設我有任何可繪製的JavaFX元素,我將如何繪製該特定元素到圖像文件。

我知道擺動會提供其getGraphics()直接繪製到圖像的像素緩衝區,但我找不到任何類似的NodePane

回答

2

您可以採取的Nodesnapshot並保存到文件

涵蓋了以下內容:Take a snapshot with 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(); } 
    } 
} 
+1

泰!我現在看到我的問題確實是重複的,谷歌沒有提供任何有用的東西。我甚至沒有在我的搜索中考慮「快照」這個詞。 – arynaq