基本上就是这笔交易,我试图从项目中的源文件加载图像,但每当我运行代码时都没有任何反应。
任何人都可以了解我出错的地方,也许还有可能如何让它正确绘制?
以下是代码:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class EnterTile extends Tile {
public EnterTile() {
setTile();
}
public void setTile() {
try {
BufferedImage img = ImageIO.read(new File("res\\BrokenFenceSwamp.gif"));
Graphics g = img.getGraphics();
g.drawImage(img, 1000, 1000, 8, 8, null);
} catch (IOException e) {
System.out.println("Error " + e);
}
}
public static void main(String args[]) {
EnterTile enterTile = new EnterTile();
}
}
感谢您花时间阅读本文。
答案 0 :(得分:1)
要正确加载图像,您需要:
ImageIO.read(EnterTile.class.getResource("/BrokenFenceSwamp.gif"));
)要绘制图像,您需要指定位置。 E.g。如果您使用的是awt库。您可以尝试这样的事情:
public class Main {
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame("Image Test");
frame.setSize(400, 800);
frame.setVisible(true);
frame.setFocusable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
Canvas canvas = new Canvas();
canvas.setPreferredSize(new Dimension(400, 800));
canvas.setMaximumSize(new Dimension(400, 800));
canvas.setMinimumSize(new Dimension(400, 800));
frame.add(canvas);
frame.pack();
canvas.createBufferStrategy(2);
BufferStrategy bs = canvas.getBufferStrategy();
Graphics g = bs.getDrawGraphics();
g.clearRect(0, 0, 400, 800);
String path = "/BrokenFenceSwamp.gif";
BufferedImage image = ImageIO.read(Main.class.getResource(path));
g.drawImage(image, 0, 0, null);
bs.show();
g.dispose();
}
}
答案 1 :(得分:1)
获取图像的图形是一种能够在图像上绘图的工具:
BufferedImage img = ImageIO.read(new File("res\\BrokenFenceSwamp.gif"));
Graphics g = img.getGraphics();
g.drawString(img, 100, 100, "Hello World!");
g.dispose();
ImageIO.write(new File("res/TitledBFS.gif"));
它不会在屏幕上绘制。
Graphics
可以是内存(此处),屏幕或打印机。
要在屏幕上绘图,可以创建一个没有标题和边框的全屏窗口,在其背景上绘制图像。
这需要熟悉swing或更新的JavaFX。