2017-08-28 69 views
0

我正在尝试使用JFrame创建游戏,并且它要求我绘制图像。我使用的Graphics2D画他们,但我想不出为什么不给我输出:用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(); 
} 

而且我一直没能找到一种方法来绘制实际工作的图像。

+0

永远不要调用'finalize'。 –

回答

1

首先关于“资源/主”(和缺少的文件扩展名)。如果这会发生是一个行家项目的路径应该是:

src/main/resources/my_image.png 

用于读取资源文件可以这样做:

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

然后,这个文件位于与上类类路径,可以通过解压缩来查看路径。 如果路径不正确,会得到NullPointerException。

0

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

paintComponent方法是您所有的自定义绘画发生的地方。

2.this answer你也应该不叫finalize()你的图形对象,但据我所知,它不应该与你的绘图干扰。有关为什么finalize()在此不需要的更多详细信息,请参见this answer

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

4.请参阅Joop Eggen's资源加载的答案,这也可能导致您看不到图像。