2017-05-13 1 views
0

Ich möchte Kreise mit einem zufälligen Durchmesser, Position und Farbe in einem Panel mit der Graphics-Klasse in Java erstellen. Es funktioniert gut, aber ich habe das Problem, dass oft Kreise die Grenze berühren oder überlappen.Wie man Kreise in einem Panel nicht die Grenzen berühren? (Java Graphics)

Wie kann ich die Kreise vollständig innerhalb des Panels bleiben lassen?

Vielen Dank im Voraus!

Dies ist der Code, den ich für die Erstellung der Kreise verwenden:

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

Antwort

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

Wie kann man die Berechnung der x/y-Position, wenn Sie nicht wissen, was der Durchmesser des Kreises sein wird ?

Zuerst müssen Sie den Durchmesser berechnen. Dann müssen Sie den Durchmesser verwenden, um sicherzustellen, dass das x/y plus der Durchmesser kleiner als die Breite des Panels ist.

Ich verstehe nicht den Punkt, 50 hinzuzufügen und dann subtrahieren 50. Ich würde denken, dass die Zufallszahl die Breite minus den Durchmesser sein sollte.

Verwandte Themen