javaFX刚学不久遇到一个问题

下面是代码,我想水平地重复打印4个这样的笑脸图形,有什么简便方法


package application;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.stage.Stage;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.shape.ArcType;

public class face extends Application {
    @Override
    public void start(Stage stage) 
    {
        Group mygroup = new Group();
        Canvas mycanvas = new Canvas(800,300);
        GraphicsContext mygraph = mycanvas.getGraphicsContext2D();
        mygraph.setStroke(Color.PLUM);
        mygraph.strokeOval(100, 50, 200, 200);
        mygraph.setFill(Color.BLUE);
        mygraph.fillOval(195,150,10,10);
        mygraph.setFill(Color.CRIMSON);
        mygraph.fillOval(160, 100, 10, 20);
        mygraph.fillOval(230, 100, 10, 20);
        mygraph.setStroke(Color.PINK);
        mygraph.strokeArc(150, 160, 100, 50, 180, 180, ArcType.OPEN);    
        mygroup.getChildren().add(mycanvas);        
        Scene mysc = new Scene(mygroup);
        stage.setScene(mysc);
        stage.show();
    }
    public static void main(String[] args) {
            launch(args);
        }
}

原理就是这样,我懒得调整位置,你自己调整下位置就可以了。代码如下:效果图如下:


import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.stage.Stage;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.shape.ArcType;

public class face extends Application {
    @Override
    public void start(Stage stage) {
        Canvas mycanvas = new Canvas(800, 300);
        for (int i = 1; i < 4; i++) {
            Group mygroup = new Group();
            GraphicsContext mygraph = mycanvas.getGraphicsContext2D();
            mygraph.setStroke(Color.PLUM);
            mygraph.strokeOval(100 * i, 50, 200, 200);
            mygraph.setFill(Color.BLUE);
            mygraph.fillOval(195 * i, 150, 10, 10);
            mygraph.setFill(Color.CRIMSON);
            mygraph.fillOval(160 * i, 100, 10, 20);
            mygraph.fillOval(230 * i, 100, 10, 20);
            mygraph.setStroke(Color.PINK);
            mygraph.strokeArc(150 * i, 160, 100, 50, 180, 180, ArcType.OPEN);
            mygroup.getChildren().add(mycanvas);
            Scene mysc = new Scene(mygroup);
            stage.setScene(mysc);
        }
        stage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}

img

用循环就行,改变x轴的位置,y轴不变。

public class Face extends Application {
@Override
public void start(Stage stage) throws Exception {
Group mygroup = new Group();
Canvas mycanvas = new Canvas(1200,300);
int[] a={0,200,400,600,800};
GraphicsContext mygraph = mycanvas.getGraphicsContext2D();
for (int i=0 ;i<a.length; i++){
mygraph.setStroke(Color.PLUM);
mygraph.strokeOval(100+a[i], 50, 200, 200);
mygraph.setFill(Color.BLUE);
mygraph.fillOval(195+a[i],150,10,10);
mygraph.setFill(Color.CRIMSON);
mygraph.fillOval(160+a[i], 100, 10, 20);
mygraph.fillOval(230+a[i], 100, 10, 20);
mygraph.setStroke(Color.PINK);
mygraph.strokeArc(150+a[i], 160, 100, 50, 180, 180, ArcType.OPEN);
}
mygroup.getChildren().add(mycanvas);
Scene mysc = new Scene(mygroup);
stage.setScene(mysc);
stage.show();
}

public static void main(String[] args) {
    launch(args);
}

}

public class Face extends Application {
@Override
public void start(Stage stage) throws Exception {
Group mygroup = new Group();
Canvas mycanvas = new Canvas(1200,300);
int[] a={0,200,400,600,800};
GraphicsContext mygraph = mycanvas.getGraphicsContext2D();
for (int i=0 ;i<a.length; i++){
mygraph.setStroke(Color.PLUM);
mygraph.strokeOval(100+a[i], 50, 200, 200);
mygraph.setFill(Color.BLUE);
mygraph.fillOval(195+a[i],150,10,10);
mygraph.setFill(Color.CRIMSON);
mygraph.fillOval(160+a[i], 100, 10, 20);
mygraph.fillOval(230+a[i], 100, 10, 20);
mygraph.setStroke(Color.PINK);
mygraph.strokeArc(150+a[i], 160, 100, 50, 180, 180, ArcType.OPEN);
}
mygroup.getChildren().add(mycanvas);
Scene mysc = new Scene(mygroup);
stage.setScene(mysc);
stage.show();
}

public static void main(String[] args) {
    launch(args);
}

}

img