我正在使用Eclipse为BlackBerry开发应用程序并想知道是否有任何方法可以保存使用Graphics对象绘制的图片...该应用程序涉及使用Graphics绘制饼图。它工作正常我第一次打开屏幕显示图表,但下次我尝试通过调用屏幕来创建图表时,它变得混乱。所以我想知道我是否可以将图表保存为图像......这样我就没有了每次打开屏幕时都要不断地画画...请帮助...提前致谢!
答案 0 :(得分:0)
我知道您正在使用java.awt.Graphics
课程,对吗?
确保您仅在AWT事件线程上绘图。
使用
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// YOUR CODE
}
});
在事件线程上运行保存代码。如果您尝试从另一个线程保存,如果图像未完全绘制,图像可能会失真。
答案 1 :(得分: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。