mg7938841 2021-07-29 08:17 采纳率: 88.9%
浏览 79
已结题

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);
        }
}
  • 写回答

4条回答 默认 最新

  • 漠上刀栈 2021-07-29 15:56
    关注

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

    
    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 修改了问题 7月29日
  • 修改了问题 7月29日
  • 展开全部

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料