2011-06-20 56 views
1

我正在为Eclipse开发一款应用程序,希望知道是否有任何方法可以保存用图形对象绘制的图片......该应用程序涉及使用Graphics.Frame绘制饼图。我打开屏幕来显示图表,但下次尝试通过调用屏幕来创建图表时,它会出现故障。因此,我想知道是否可以将图表保存为图像......这种方式我不必每次打开屏幕时不断重复绘制...请帮助...提前致谢!将图形另存为图像?

+0

最好修复使代码“干扰”的错误,而不是序列化/恢复图形以解决问题。顺便说一句 - 请解决那些粘性'?' &'。'键。一个'?'表示一个问题 - 2或更多通常表示一个bozo。 –

回答

0

我明白你正在使用java.awt.Graphics类,对吧?确保您只绘制AWT事件线程。 使用

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
    // YOUR CODE   
    } 
}); 

运行事件线程您保存代码。如果您尝试从另一个线程保存,如果图像未完全绘制,图像可能会变形。

+0

感谢您的回答Stephan!但是当我使用invokeLater()时,图表没有显示出来...当它出现时,它已经很晚了......您认为这是因为我在其他部分早些时候调用了invokeLater()应用程序? – dragonfly

0

我不知道黑莓API,但你可以采取其他方法来解决你的问题。你可以做屏幕外渲染。创建一个BufferedImage,获取对其Graphics对象的引用,进行渲染,然后将BufferedImage保存为png。

例如:

int width = 200, height = 200; 

// TYPE_INT_ARGB specifies the image format: 8-bit RGBA packed 
// into integer pixels 
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 

Graphics2D ig2 = bi.createGraphics(); 

// Draw your chart 

ImageIO.write(bi, "PNG", new File("yourImageName.PNG")); 

这样你就可以完成所有的绘图一次,将其保存为一个文件,或者只是在内存中(取决于你所需要的),然后你只需要要么加载图像从文件中或在屏幕上执行g.drawImage()。

但正如我之前说过的,我不知道这是否适用于Blackberry API,它确实适用于桌面环境中的JDK/JRE。

相关问题