2011-06-20 127 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。

相關問題