java - 随机输出图像

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

然后图像会连续显示。我想要更多随机

最佳答案

And I would like more random

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

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

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

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

关于java - 随机输出图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711349/

相关文章:

java - 在Android中,我应该为哪个Java版本编译代码,以及如何为Ant设置它?

java - 我按照这个 maven-glassfish-plugin 示例但是出现错误消息,为什么?

java - 如何在android中格式化和打印文本文件?

java - BoxLayout 从下到上(Java Swing)

Java - 图标未对齐的 JLabel(向右)

Java Swing 类无法转换为 DefaultListModel

java - 如何动态更改文本框中文本的大小

java - 随机查询多个表,有限制

java - 使用鼠标事件时 JPanel 重绘不可见

java - Java 中枚举的缺点是什么?