繁体   English   中英

使用Graphics2D绘制图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM