[英]Drawing an image with Graphics2D
我正在尝试使用JFrame创建游戏,并且它要求我绘制图像。 我正在使用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();
}
而且我还没有找到一种方法来绘制实际有效的图像。
首先是关于“资源/主要”(以及缺少的文件扩展名)。 如果这恰好是Maven项目,则路径应为:
src/main/resources/my_image.png
要读取资源文件,可以执行以下操作:
Image img = ImageIO.read(getClass().getResourceAsStream("/my_image.png"));
然后,此文件与类路径中的类一起驻留,可以通过解压缩将其检查在jar中。 如果路径不正确,则会获取NullPointerException。
1.您的第一个错误可能是Java教程中所述的 。 您不应该覆盖paint()
:
paintComponent
方法是您进行所有自定义绘制的地方。
2.根据此答案,您也不应在图形对象上调用finalize()
,但据我所知,它不应干扰您的绘图。 另请参阅此答案,以获取有关为何在此处不需要finalize()
其他详细信息。
3.您是否检查过您的组件甚至在屏幕上都没有看到? 如果大小为0x0,则可能会绘制图像,但仍然看不到。 我发现检查组件是否可见的一种简单方法是(临时)将其边框更改为绿线以验证其大小和位置。
4.有关资源加载,请参见Joop Eggen的答案,这也可能导致您看不到图像。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.