您可以通過獲取其Graphics上下文,繪製其中的任何圖像到BufferedImage中,然後處理Graphics對象。例如
// get a Graphics object from BufferedImage, img1
Graphics g = img1.getGraphics();
// use that g to draw another BufferedImage starting at x, y of 0, 0
g.drawImage(img2, 0, 0, null);
// clean up resources so as not to run out.
g.dispose();
現在img1顯示覆蓋它的img2的舊img1。如果你想圖像是透明的,你需要的字母組合讀了以及如何使用它
編輯
關於你編輯的問題:
我有兩個圖形對象,是否有可能將它們合併爲一個?
氣墊船充滿鰻魚的答案是有用的,但不是我的意思。假設我有兩個圖形對象,私有圖形gr1和私有圖形gr2。現在,我應該如何將它們合併到paintComponent(Graphics)方法中以將其繪製到我的(例如JPanel)?
問題不是關於圖像,而是關於純粹的圖形對象。對不起,第一段是誤導。
這個請求對我來說有些困惑,因爲我認爲Graphics對象是用來畫圖或屏幕的畫筆或畫筆。所以我不認爲你畫一個Graphics對象給任何東西,而是你使用一個Graphics對象作爲工具來繪製其他可以顯示或存儲圖形的東西。你將不得不花費更多的精力來問你的問題,向我們提供足夠的細節,以便我們不必猜測你正在嘗試做什麼。請告訴我們整個故事。
編輯2
在回答您最新的編輯你的問題:
如果在的paintComponent()方法來繪製,我覺得,如果你重繪屏幕惱人的一切都消失了,如果你想移動一些你必須保存的東西的座標和尺寸,調整它們並在Graphics對象中獲取它們。 我問自己的問題是accely:什麼對象最適合或保存一個Graphics對象。一個圖形對象,我想。但問題是,如果你有(例如)兩個矩形,一個移動到左邊,一個移動到右邊,如果你有1個Graphics對象則不能。
不,更好的解決方案我認爲是使用BufferedImage保存應該持續的。當您想要將圖像添加到背景BufferedImage時,您可以通過調用getGraphics()
來獲得BufferedImage的Graphics對象,然後通過使用Graphics對象的drawImage(...)
方法將圖像繪製到該對象上,然後您可以調用dispose()
放在BufferedImage的Graphics對象上,以免丟失資源。
要在背景中繪製背景BufferedImage,您可以在paintComponent(...)
方法的頂部調用它,通常在調用super.paintComponent(...)
方法之後。
我的解決方案是多個圖形對象,它們可以轉換爲模擬運動,然後繪製到屏幕上。 @Hovercraft充滿了鰻魚我想你(和大多數SO'ers)認爲這不是一個好的解決方案,看着你的答案。
是的,你猜對了 - 我相信有比你建議的更好的解決方案。
在我對這個問題的回答中,我可以在我的代碼帖子中找到我正在得到的一個示例:changing-jpanel-graphics-g-color-drawing-line。
如果你運行我的代碼,你會看到這一點:
![enter image description here](https://i.stack.imgur.com/4hnvx.jpg)
結合如何?強加?綜合? – trashgod 2012-08-18 12:04:56
哪一個和哪個第二? – 2012-08-18 12:08:38
@trashgod你不應該問我,我真的不知道你在說什麼。首先,我的問題是如果甚至可能的話。但是,如果你的評論是一個答案,那麼你可以解釋哪些選項(參考/教程鏈接是理想的),我很有可能接受它。 – 11684 2012-08-18 12:21:27