绘制同心圆,一次出现一个,Java

时间:2016-11-13 05:26:52

标签: java animation graphics

我正在尝试绘制一次一个出现的同心圆,从最小到最大。我希望通过在每次循环执行时向现有外圆的外部添加一个额外的圆来给出圆形扩展的错觉。目前,当我运行程序时,所有圆圈都出现在同一时间。请帮忙,我不知道该怎么做。提前谢谢。

public static void drawCircles(Graphics g) {
    int radius = 10;
    int x = 0;
    while(x <= 10) {
        int z = radius / 2;
        g.drawOval(100 - z, 100 - z, radius, radius);
          x++;
          radius = radius + 10;

    }
}

2 个答案:

答案 0 :(得分:0)

给出扩大圈子的错觉。您的算法应该通过擦除画布or来移除旧圆圈,例如再次绘制背景,以便在绘制新圆圈之前看起来已清除旧圆圈。

所以,如果我的背景是一个灰色的盒子,我会在绘制新圆圈之前绘制它。

g.setColor(Color.GRAY);
g.fillRect(0,0,BACKGROUND_SIDE_X, BACKGROUND_SIDE_Y);
g.drawOval(100 - z, 100 - z, radius, radius);

答案 1 :(得分:0)

要在圆绘制之间暂停程序,请添加对Thread.sleep(long millis)的调用,其中millis是您要暂停的毫秒数。

public static void drawCircles(Graphics g) {
  int radius = 10;
  int x = 0;
  while(x <= 10) {
    int z = radius / 2;
    g.drawOval(100 - z, 100 - z, radius, radius);              
    try {
      Thread.sleep(1000);
    } catch (InterruptedException e) {

    }
    x++;
    radius = radius + 10;
  }
}