假设我在 上有 N 层StackPane,我在 上进行混合、绘图、图像、矩形等StackPane。我将如何保存结果?即我的屏幕上显示的内容StackPane。
一般来说,假设我有任何可绘制的 JavaFX 元素,我将如何将该特定元素绘制到图像文件中。
我知道 swing 会提供它来getGraphics()直接绘制到图像的像素缓冲区,但我找不到任何类似的Node或Pane。
小智 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)