我正在为Eclipse开发一款应用程序,希望知道是否有任何方法可以保存用图形对象绘制的图片......该应用程序涉及使用Graphics.Frame绘制饼图。我打开屏幕来显示图表,但下次尝试通过调用屏幕来创建图表时,它会出现故障。因此,我想知道是否可以将图表保存为图像......这种方式我不必每次打开屏幕时不断重复绘制...请帮助...提前致谢!将图形另存为图像?
1
A
回答
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。
相关问题
- 1. 将JPanel另存为图像
- 2. 在matlab中,如何将图形保存为图像,就像在图形窗口中使用“另存为...”一样?
- 3. JavaScript将元素另存为图像或Extjs 4.x另存为图像
- 4. 将WPF UserControl另存为矢量图像
- 5. 将GoogleGraph另存为矢量图像
- 6. 将画布另存为图像
- 7. 将画布另存为图像Internet Explorer
- 8. JIT Spacetree将标签另存为图像
- 9. 使用OpenCV将图像变形为另一个图像的四边形区域
- 10. 将图形保存到缓冲图像
- 11. 将图像转换为图形在c#
- 12. 如何将图像保存为图像
- 13. 如何将面板中的图形(如矩形,圆形)保存为图像?
- 14. 将图表另存为PDF
- 15. 将矩形图像重新调整为方形图像
- 16. 将矩形图像绘制/翘曲为四边形图像
- 17. 如何将矩形图像设置为圆形图像
- 18. PHP - 如何将矩形图像转换为方形图像?
- 19. 将方形图像转换为矩形
- 20. 将matplotlib图形保存为数据库中的图像字段
- 21. 将Java 2d图形图像保存为.png文件
- 22. 如何将图形对象保存为C#中的图像?
- 23. cytoscape将图形保存为按钮图像
- 24. 将创建的图形保存为图像
- 25. 如何使用SurfaceView将图形绘制保存为图像?
- 26. 自动将图形保存为Matlab中的图像文件
- 27. JUNG:将图形保存为图像文件
- 28. 将neo4j图形保存在浏览器中作为图像
- 29. 如何将图表另存为服务器上的图像
- 30. CF:将Fusioncharts图表另存为电子邮件图像
最好修复使代码“干扰”的错误,而不是序列化/恢复图形以解决问题。顺便说一句 - 请解决那些粘性'?' &'。'键。一个'?'表示一个问题 - 2或更多通常表示一个bozo。 –