2016-06-25 5 views
2

StackPaneにN個のレイヤーがあるとします。StackPaneにブレンド、図面、画像、長方形などをします。結果を保存するにはどうすればいいですか?つまり、StackPaneの画面に表示される内容です。JavaFX:画像をペインに保存する

一般に、描画可能なJavaFX要素があるとします。その特定の要素をイメージファイルに描画するにはどうすればよいでしょうか。

スイングはgetGraphics()を画像のピクセルバッファーに直接描画することができますが、NodeまたはPaneの場合は似たものが見つかりません。

答えて

2

あなたはNodesnapshotを取ると、次にまみれ

を提出することを保存することができます:

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

のTy:Take a snapshot with JavaFX!


私は以下のようなものを使用する傾向があります!私は今私の質問は重複していることを知っている、グーグルは役に立たない何かを上げませんでした。私は検索で「スナップショット」という言葉を考慮しなかった。 – arynaq