2013-10-31 113 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); 
}