随机输出图像

时间:2013-10-31 16:01:41

标签: java swing

欢迎)有点麻烦,请帮忙解决。这是代码:

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);
  }
}

如果我们运行代码,我们会显示一张图片。但我的任务是在不同的地方带来许多相同的图像。怎么做?)

如果您这样做:

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

然后图像连续显示。而且我想更多随机

3 个答案:

答案 0 :(得分:2)

  

我想要更随机

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

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

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

此外,自定义绘制是通过覆盖paintComponent(...)方法而不是paint()方法完成的。

答案 1 :(得分: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)之间的随机坐标。

答案 2 :(得分: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);
}