-1

我创建了像这样的椭圆形物体:

for (toop b : top)
{
    g.setColor(Color.orange);
    g.fillOval(b.getx(), b.gety(), 50, 50);
}

一切都很好。但现在我想添加 ball.png 而不是为其设置颜色。我使用了这段代码,但没有任何改变:

for (toop b : top)
{
    g.drawImage(new ImageIcon("C:\\Users\\PETTER\\Desktop\\ball.png").getImage(), b.getx() , b.gety() , 50, 50, b);
    g.fillOval(b.getx(), b.gety(), 50, 50);
}

那么我该怎么做呢?请帮帮我

4

2 回答 2

0

永远不要在paint()orpaintComponent()方法中加载图像。在构造函数中执行它或创建一个init()方法。如果您尝试ball.png在框架或面板中绘制,请执行

Image ball = null;

private void init()
{
    ball = new ImageIcon(getClass().getClassLoader()
                                   .getResource("ball.png")).getImage();
}

@Override
public void paintComponent(Graphics g)
{
    g.drawImage(ball, 0, 0, 100, 100, null);
}

希望这可以帮助。

于 2013-06-24T11:47:48.343 回答
0

如果在 drawImage 之后调用 fillOval,橙色将覆盖油漆。

此外,不要使用 ImageIcons 加载图像,而是使用 ImageLoader.createImage(File)。(返回的是一个 BufferedImage,它的绘制速度也更快)

于 2013-06-24T11:50:53.193 回答