2012-10-06 43 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; 
    } 
    }); 
}