欢迎)有点麻烦,请帮忙解决。这是代码:
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);
}
然后图像连续显示。而且我想更多随机
答案 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);
}