使用Graphics2D绘制图像

时间:2017-08-28 09:46:15

标签: java jframe 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();
}

我无法找到一种方法来绘制实际有用的图像。

2 个答案:

答案 0 :(得分:1)

首先关于"资源/主要" (以及缺少的文件扩展名)。如果这恰好是 maven 项目,则路径应为:

src/main/resources/my_image.png

要读取资源文件,可以执行以下操作:

Image img = ImageIO.read(getClass().getResourceAsStream("/my_image.png"));

此文件随后驻留在类路径上的类中,可以通过解压缩来检查jar中的路径。 如果路径不正确,则会收到NullPointerException。

答案 1 :(得分:0)

1。您的第一个错误可能与Java Tutorial中所述相同。你不应该覆盖paint()

  

paintComponent方法是进行所有自定义绘制的地方。

2。根据this answer,您也不应该在图形对象上调用finalize(),但据我所知,它不应该干扰您的绘图。有关此处不需要finalize()的原因的其他详细信息,请参阅this answer

3。您是否检查过您的组件是否在屏幕上显示?如果它的大小为0x0,则可能会绘制图像,但仍然无法看到。我发现检查组件是否被看到的一种简单方法是(暂时)将其边框更改为绿线以验证其大小和位置。

4. 请参阅Joop Eggen's答案,了解资源加载情况,这也可能导致您无法看到图片。