2017-08-28 131 views
0

我正在嘗試使用JFrame創建遊戲,並且它要求我繪製圖像。我使用的Graphics2D畫他們,但我想不出爲什麼不給我輸出:用Graphics2D繪製圖像

public void paint(Graphics g) { 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
      RenderingHints.VALUE_ANTIALIAS_ON);  
    Image img = Toolkit.getDefaultToolkit().getImage("src/resources/main/my_image"); 
    g2d.drawImage(img, 0, 0, null); 
    g2d.finalize(); 
} 

而且我一直沒能找到一種方法來繪製實際工作的圖像。

+0

永遠不要調用'finalize'。 –

回答

1

首先關於「資源/主」(和缺少的文件擴展名)。如果這會發生是一個行家項目的路徑應該是:

src/main/resources/my_image.png 

用於讀取資源文件可以這樣做:

Image img = ImageIO.read(getClass().getResourceAsStream("/my_image.png")); 

然後,這個文件位於與上類類路徑,可以通過解壓縮來查看路徑。 如果路徑不正確,會得到NullPointerException。

0

1.您的第一個錯誤可能是Java Tutorial中所述。您不應該覆蓋paint()

paintComponent方法是您所有的自定義繪畫發生的地方。

2.this answer你也應該不叫finalize()你的圖形對象,但據我所知,它不應該與你的繪圖干擾。有關爲什麼finalize()在此不需要的更多詳細信息,請參見this answer

3.您是否檢查過您的組件是否在屏幕上?如果大小爲0x0,則可能會繪製圖像,但仍然無法看到。我發現檢查組件是否被看到的一個簡單方法是(臨時)將它的邊界改爲綠線以驗證其大小和位置。

4.請參閱Joop Eggen's資源加載的答案,這也可能導致您看不到圖像。