如何在Java中呈现2d图像

时间:2011-08-05 18:14:20

标签: java image swing java-2d

我有一个关于Java的快速问题。如果这个问题非常基本,我很抱歉,但我是Java初学者:D

我想在一个窗口中渲染一个二维图像,但我无法弄明白。我在这里查看了图形API:

http://download.oracle.com/javase/1.4.2/docs/api/java/awt/Graphics.html

我唯一可以找到的方法是drawImage()。 但是,这对我不起作用,但也许它与ImageObserver Observer参数有关?我只是在我找到的某个教程之后将null放在那里,但我仍然遇到编译错误: 这是我的绘画方法:

public void paint(Graphics g)
{   
    Image img1 = Toolkit.getDefaultToolkit().getImage("theImage.png");
    g.drawImage(img1, 100, 100, null);
} // public void paint(Graphics g)

以下是调用它的方法:

public static void main(String[] args)
{
    MyGame game = new MyGame();
    game.setVisible(true);
    game.play();      

} // public static void main(String[] args)



/** The play method is where the main game loop resides. 
 */
public void play()
{
    boolean playing = true;
    //Graphics g = new Graphics();
    while (playing)
    {
        paint();
    }

} //  public void play()

事情就是当我在while循环中调用paint时,我收到此错误:     MyGame中的paint(java.awt.Graphics)无法应用于()

这是什么意思?如何修复它以便我可以成功渲染2d图像?

提前致谢:D

3 个答案:

答案 0 :(得分:8)

而不是paint();使用repaint();

答案 1 :(得分:3)

你应该压倒paintComponent(Graphics g)。另外,正如@TotalFrickinRockstarFromMars建议的那样,您应该调用repaint()

答案 2 :(得分:1)

  • 您覆盖了paintComponent(Graphics g)

类游戏扩展了JComponent {//你的游戏类

Image img = null;

public Game() {
   img = getImage("/theImage.png");
}

private Image getImage(String imageUrl){

try {

    return ImageIO.read(getClass().getResource(imageUrl));

} catch (IOException exp) {}

return null;

}

paintComponent(Graphics g){

   g.drawImage(img, 100, 100, null);

}

}