假设我在StackPane
上有N层,我会在StackPane
上进行混合,绘图,图像,矩形等。如何保存结果?即StackPane
在屏幕上显示的内容。
通常,假设我有任何可绘制的JavaFX元素,我将如何将该特定元素绘制到图像文件中。
我知道swing会提供getGraphics()
直接绘制到图像的像素缓冲区,但我找不到类似于Node
或Pane
的任何内容。
答案 0 :(得分:4)
您可以Node
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(); }
}
}
并将其保存到文件
涵盖以下内容:snapshot
我倾向于使用类似下面的内容:
GCM-DMM : broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=THE_PACKAGE_NAME (has extras) }