将图形保存为图像?

时间:2011-06-20 07:59:04

标签: java graphics blackberry-eclipse-plugin

我正在使用Eclipse为BlackBerry开发应用程序并想知道是否有任何方法可以保存使用Graphics对象绘制的图片...该应用程序涉及使用Graphics绘制饼图。它工作正常我第一次打开屏幕显示图表,但下次我尝试通过调用屏幕来创建图表时,它变得混乱。所以我想知道我是否可以将图表保存为图像......这样我就没有了每次打开屏幕时都要不断地画画...请帮助...提前致谢!

2 个答案:

答案 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。