2012-10-06 50 views
2

我輸入:Java:如何用導入的PNG文件替換「橢圓形」或「矩形」圖形?

import javax.swing.ImageIcon; 

,我用這個代碼導入PNG文件。 (我知道我可以很容易地創建一個黑色的方塊,但它是我想要的任何圖像導入到我的遊戲)。

Image player1 = Toolkit.getDefaultToolkit().createImage("Users/Documents/JavaGameImages/Tag/BlackSquare.png"); 

我試圖稍後調用此圖像,但圖像沒有出現在窗口中。 (假設MYX = 100和MYY = 100)

public void paint(Graphics g) {   
     g.setColor(BackgroundColor); 
     g.fillRect(WindowWidth, WindowHeight, 1000, 1000); 

///////////////////////下面的代碼是我在哪裏遇到問題:

 g.drawImage(player1, myX, myY, null); 
+1

這可能不是圖像的正確網址。 –

+0

沒有運行時錯誤。我確信它是正確的位置。 (我在終端用「標籤」進行測試),並且文件顯然存在。我可以在查找器中看到它,並且可以在沒有腐敗的情況下打開。 – user1725720

+0

缺乏異常並不意味着您的代碼能夠正常工作,只是它沒有失敗。 –

回答

0

當您構建用於分發的代碼時,您可能希望將該圖像放入帶有類文件的jar文件中。我要做的就是把它放到相同的目錄類多數民衆贊成訪問它,然後我用的getClass()的getResource(文件名)訪問它,因爲在這個代碼片段從紋理背景邊框:

final Toolkit toolKit = Toolkit.getDefaultToolkit(); 
URL imgURL = getClass().getResource(textureFileName); 
if (imgURL != null) 
{ 
    Image tmpImage = toolKit.createImage(imgURL); 
    toolKit.prepareImage(tmpImage, -1, -1, 
      new ImageObserver() { 
    public boolean imageUpdate(Image updatedImage, int infoFlags, int x, 
           int y, int width, int height) 
    { 
     if ((infoFlags & ImageObserver.ALLBITS) == ImageObserver.ALLBITS) 
     { 
     int   w    = updatedImage.getWidth(null); 
     int   h    = updatedImage.getHeight(null); 
     BufferedImage backgroundImage = new BufferedImage(w, h, 
              BufferedImage.TYPE_INT_ARGB_PRE); 
     Graphics2D g = backgroundImage.createGraphics(); 
     g.drawImage(updatedImage, 0, 0, null); 
     g.dispose(); 

     Rectangle rect = new Rectangle(0, 0, w, h); 
     texture = new TexturePaint(backgroundImage, rect); 

     return false; 
     } 

     return true; 
    } 
    }); 
}