2013-10-31 82 views
0

欢迎您)有点麻烦,请帮忙解决。下面的代码:随机输出图片

import java.awt.Graphics; 
import java.awt.Image; 
import java.awt.Toolkit; 

import javax.swing.JComponent; 
import javax.swing.JFrame; 

class MyCanvas extends JComponent { 

    public void paint(Graphics g) { 
    Image img1 = Toolkit.getDefaultToolkit().getImage("yourFile.gif"); 

    int width = img1.getWidth(this); 
    int height = img1.getHeight(this); 

    int scale = 2; 
    int w = scale * width; 
    int h = scale * height; 
    // explicitly specify width (w) and height (h) 
    g.drawImage(img1, 10, 10, (int) w, (int) h, this); 

    } 
} 

public class Graphics2DDrawScaleImage { 
    public static void main(String[] a) { 
    JFrame window = new JFrame(); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    window.setBounds(30, 30, 300, 300); 
    window.getContentPane().add(new MyCanvas()); 
    window.setVisible(true); 
    } 
} 

如果我们运行的代码,我们已经显示picture.But我的任务是把许多相同的图像,但在不同的地方。如何做到这一点)

如果你这样做:

for(int i = 0; i < 500 ; i+=100){ 
g.drawImage(img1, 10+i, 10, (int) w, (int) h, this); 
} 

然后将图像显示在一排。我想更多的randoml

+1

看看这里http://docs.oracle.com/javase/7/docs/api/java/util/Random.html – user902383

+0

谢谢大家!主要是图片不“跳” –

回答

2

,我想更多的随机

使用Random类来生成您的指定范围内的整数。您可能想要使用getWidth()getHeight()来获取组件的边界,以便指定一个真实的范围。然后你可以随机化x,y值。

Random random = new Random(); 
int x = random(getWidth()); 
int y = random(getHeight(); 

您可能还想考虑图像的宽度/高度,以确保它们完全包含在面板中。

此外,自定义绘画是通过重写paintComponent(...)方法而不是paint()方法来完成的。

+0

通常我们想让图片不仅在面板上,而且还在外面给我一个小游戏。我想在地图上分散各种物体(图片) –

1

通过调用

g.drawImage(img1, x, y, (int) w, (int) h, this); 

多次x和y的值不同确实是正确的,你就可以绘制同一图像多次。所以,基本上你需要做的是随机化坐标。这可以通过在Java中使用的得心应手Random类完成:

Random random = new Random(); 
int x = random.nextInt(300); 
int y = random.nextInt(300); 

这将产生之间的随机坐标为(0,0)和(299,299)。

1

您可以使用随机:

Random rand = new Random(); 

for(int i = 0; i < 500 ; i+=100){ 
    g.drawImage(img1, rand.nextInt(300), rand.nextInt(300), (int) w, (int) h, this); 
}