2017-05-13 5 views
0

JavaのGraphicsクラスを持つパネルで、ランダムな直径、位置、色で円を作成したいと思います。それはうまく動作しますが、しばしばサークルが境界に触れるか重なる問題があります。パネル内の円を境界線に触れさせない方法は? (Java Graphics)

サークルをパネル内に完全に維持するにはどうすればよいですか?

ありがとうございます!

これは私が円を作成するために使用するコードです:

amount = rnd.nextInt(10); 
    for (int i = 0; i < amount; i++){ 
     x = (50 + rnd.nextInt(panel.getWidth() - 50 + 1)) - 50; 
     y = (50 + rnd.nextInt(panel.getHeight() - 50 + 1)) - 50; 
     diameter = (rnd.nextInt(100)); 
     gr.setColor(new Color(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256))); 
     gr.fillOval(x, y, diameter, diameter); 
     gr.drawString("" + (panel.getHeight() - y), x, y); 
    } 

答えて

0
x = (50 + rnd.nextInt(panel.getWidth() - 50 + 1)) - 50; 
    y = (50 + rnd.nextInt(panel.getHeight() - 50 + 1)) - 50; 
    diameter = (rnd.nextInt(100)); 

どのようにあなたは円の直径がために何が起こっているか分からない場合は、計算のx/yの位置することができます?

まず、直径を計算する必要があります。次に、直径を使用してx/yと直径を加えたものがパネルの幅より小さいことを確認する必要があります。

50を足してから50を引いた点は分かりません。乱数から幅を差し引いた数を考える必要があります。

関連する問題