Java:如何用导入的 PNG 文件替换“椭圆”或“矩形”图形?
Posted
技术标签:
【中文标题】Java:如何用导入的 PNG 文件替换“椭圆”或“矩形”图形?【英文标题】:Java: How do I replace an "oval" or "rectangle" graphic with an imported PNG file? 【发布时间】:2012-09-27 15:02:51 【问题描述】:我导入了:
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);
【问题讨论】:
这可能不是图片的正确网址。 没有运行时错误。我确信这是正确的位置。 (我在终端中使用“tab”进行了测试)并且文件显然在那里。我可以在finder中看到它,并且可以打开而不会损坏。 没有异常并不意味着你的代码可以工作,只是它没有失败。 我推荐 ImageIO 加载图像,恕我直言。检查here for examples 如果图像要嵌入到您的最终应用程序中,您需要使用 geClass().getResource(...) 来定位它 【参考方案1】:当您构建用于分发的代码时,您可能希望将图像与类文件一起放入 jar 文件中。我所做的是将它放在与访问它的类相同的目录中,然后我使用 getClass().getResource(fileName) 访问它,就像在纹理背景边框的这段代码中一样:
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;
);
【讨论】:
以上是关于Java:如何用导入的 PNG 文件替换“椭圆”或“矩形”图形?的主要内容,如果未能解决你的问题,请参考以下文章