我有一個擴展了Canvas
的類並實現了以下方法。問題是,每當我打電話給exportImage
時,我所得到的只是一張空白的圖像。圖像上應該有圖紙。Java:將畫布保存爲圖像文件會產生空白圖像
/**
* Paint the graphics
*/
public void paint(Graphics g) {
rows = sim.sp.getRows();
columns = sim.sp.getColumns();
createBufferStrategy(1);
// Use a bufferstrategy to remove that annoying flickering of the display
// when rendering
bf = getBufferStrategy();
g = null;
try{
g = bf.getDrawGraphics();
render(g);
} finally {
g.dispose();
}
bf.show();
Toolkit.getDefaultToolkit().sync();
}
/**
* Render the cells in the frame with a neat border around each cell
* @param g
*/
private Graphics render(Graphics g) {
// Paint the simulation onto the graphics...
}
/**
* Export the the display area to a file
* @param imageName the image to save the file to
*/
public void exportImage(String imageName) {
BufferedImage image = new BufferedImage(getWidth(), getHeight(),BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();
paintAll(graphics);
graphics.dispose();
try {
System.out.println("Exporting image: "+imageName);
FileOutputStream out = new FileOutputStream(imageName);
ImageIO.write(image, "png", out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –