2012-11-25 280 views
0

我試圖得到一堆小圈有不同色調的綠色,在一個大圓圈內得到一個「布什」看,但我無法弄清楚如何獲得所有的小圈子一個大圈的形狀。我只能弄清楚如何把它放在一個矩形內。如何在圓圈內繪製圓形?

public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 

     for(int i = 0; i < 1000; i++){ 
     int redV = (int) ((Math.random() * 100) + 27); 
     g.setColor(new Color(red, red + 31, red - 15)); 

     int x = (int) ((Math.random() * 400) + 150); 
     int y = (int) ((Math.random() * 500) + 200); 

     g.fillOval(x, y, 50, 50); 
     } 
    } 
+0

爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

3

我想你必須在這裏做一些幾何,並驗證隨機生成的x和y座標是否在你的圓圈內。正如你所說,在一個矩形內很容易(因爲你只需檢查x>左邊,x + 50 <右邊,y> top,y + 50 <底部),但是對於一個圓圈,你必須使用equation of a circle並檢查x,y)和(x + 50,y + 50)在實際執行fillOval()之前。

我認爲你有一個簡單的出路,通過使用Java 2D 2D Shape.contains(),它由Ellipse2D實現。所以基本上,您爲大圓創建了Ellipse2D.DoubleEllipse2D.Float的實例,然後每次在繪製座標之前都會調用以檢查它們是否在其中。

0

我認爲你可以稍微改變顏色,稍微增加/減少x,y,寬度和高度,以使它們位於較舊的圓圈內。新的橢圓應該塗在舊的橢圓上。

+1

對不起,這個答案提供了哪些新*信息?你的回答建議「做任何事情」來解決問題。 – Vulcan

0

選擇應該是大圓圈中心的點,然後繪製與之相關的大圓圈(例如使用java.awt.geom.Ellipse2D)。

然後,您可以使用大圓的中心及其半徑來定位圓周內相對於其他小圓的位置。