我试图在彼此内部绘制具有相同中心的圆圈。 但是每个圆的宽度应该是不同的 - 它应该在while循环内完成。
我的代码如下所示:
package modelwhile;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class exercise4_figure3 extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) {
GridPane root = initContent();
Scene scene = new Scene(root);
stage.setTitle("Loops");
stage.setScene(scene);
stage.show();
}
private GridPane initContent() {
GridPane pane = new GridPane();
Canvas canvas = new Canvas(200, 200);
pane.add(canvas, 0, 0);
drawShapes(canvas.getGraphicsContext2D());
return pane;
}
// ------------------------------------------------------------------------
// circle figure begins here
private void drawShapes(GraphicsContext gc) {
int x = 80;
int y = 80;
int r1 = 20;
int r2 = 60;
while (r1 <= 80) {
gc.strokeOval(x - r2, y - r2, r1, r2);
r1 = r1 + 10;
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:1)
问题在于,您不能在x轴上移动以考虑每个新椭圆的增加宽度。你需要将一半的距离移动到椭圆上,以便将它们保持在相同的相对位置。
以下是您更新的drawShapes()
方法,以包含此移动。您注意到我删除了您的x
,y
和r2
变量,因为他们并不需要变量,因为没有对它们进行任何操作。< / p>
private void drawShapes(GraphicsContext gc) {
int r = 20;
while (r <= 80) {
gc.strokeOval(80-(r/2), 80, r, 60);
r = r + 10;
}
}