下面是代码,我想水平地重复打印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);
}
}
用循环就行,改变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);
}
}