2012-11-25 102 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)。

然后,您可以使用大圆的中心及其半径来定位圆周内相对于其他小圆的位置。