我有一个开放式的学校项目,我正在尝试一些有点错综复杂的东西,但是我在绘制正确的图形层时遇到了问题。
我试图在fillOval递归同心圆之上绘制Arc递归螺旋。我已经在递归调用螺旋之前和之后移动了fillOval的递归调用,并且它没有改变甚至没有创建螺旋的最终效果。但如果我使用drawOval,同心圆看起来与螺旋重叠。
我的代码如下所示: 我目前正在使用BlueJ,因为这是我班级的指定程序。
`import java.awt。; import javax.swing。;
public class DrawPicture extends JApplet
{
// instance variables - replace the example below with your own
private final int SIZE = 600;
private final int DIST = 20;
private final int DELTA = 1;
public int i = 1;
public void recCirc(int xy, Graphics page, int clr)
{
if(xy <= SIZE/2)
{
if(clr%2 == 0)
page.setColor(Color.magenta);
else
page.setColor(Color.green);
}
page.drawOval(xy, xy, SIZE-2*xy, SIZE-2*xy);
recCirc(xy + DIST, page, clr+1);
}
public void drawRec(int xy, int angle, Graphics page)
{
if(angle < 360*2)
{
page.drawArc(xy, xy, SIZE-2*xy, SIZE-2*xy, angle, DELTA);
drawRec(xy+DELTA, angle + DELTA, page);
}
}
public void paint(Graphics page)
{
page.setColor(Color.blue);
drawRec(0, 0, page);
page.setColor(Color.red);
drawRec(0, 45, page);
page.setColor(Color.blue);
drawRec(0, 90, page);
page.setColor(Color.red);
drawRec(0, 135, page);
page.setColor(Color.blue);
drawRec(0, 180, page);
page.setColor(Color.red);
drawRec(0, 225, page);
page.setColor(Color.blue);
drawRec(0, 270, page);
page.setColor(Color.red);
drawRec(0, 315, page);
recCirc(0, page, 0);
}
}`
作为次要但不是必要的答案,如果有人知道如何使用fillArc并且我猜测半径逐渐减小使得弧线正确绘制并做出正确的填充螺旋设计我会对答案感兴趣。我只能想象它必须使用某种形式的减少半径才能做到这一点,如果我能把它拼出来,那就太多了。
提前感谢您提供的任何见解。