【问题标题】:JavaFX Making a FaceJavaFX 做鬼脸
【发布时间】:2019-04-05 00:25:41
【问题描述】:

我正在开发一个 Java FX 程序,我必须在其中制作表情符号。我已经做了一个带边框的圆圈,眼睛和皱眉。我的眉毛有问题。我有一个眉毛,但我似乎无法让另一侧的眉毛与脸的另一侧相匹配。这是我的第一个 JavaFX 程序,所以我的知识非常有限,而且我的教科书也不是很好。任何事情都会有所帮助。眉毛是line1和line2。

  package application;

  import javafx.application.Application;
  import javafx.scene.Group;
  import javafx.scene.Scene;
  import javafx.stage.Stage;
  import javafx.scene.paint.Color;
  import javafx.scene.shape.Arc;
  import javafx.scene.shape.ArcType;
  import javafx.scene.shape.Circle;
  import javafx.scene.shape.Line;

public class TracyAssignment2Chap14 extends Application {

@Override
public void start(Stage primaryStage) {
try {
    Circle circle = new Circle();
    Circle circle2 = new Circle();
    Circle circle3 = new Circle();
    circle.setCenterX(220.0);
    circle.setCenterY(220.0);
    circle.setRadius(190.0);
    circle.setFill(Color.YELLOW);
    circle.setStrokeWidth(15.0);
    circle.setStroke(Color.BLACK);
    circle2.setCenterX(300.0);
    circle2.setCenterY(215.0);
    circle2.setRadius(25.0);
    circle2.setFill(Color.BLACK);
    circle3.setCenterX(150.0);
    circle3.setCenterY(215.0);
    circle3.setRadius(25.0);
    circle3.setFill(Color.BLACK);
    Arc arc = new Arc(220,310,80,60,0,180);
    arc.setFill(null);
    arc.setStroke(Color.BLACK);
    arc.setStrokeWidth(15.0);
    arc.setType(ArcType.OPEN);
    Line line1= new Line();
    line1.setStartX(180.0);
    line1.setStartY(180.0);
    line1.setEndX(150.0);
    line1.setEndY(160.0);
    line1.setStrokeWidth(15.0);
    line1.setStroke(Color.BLACK);
    Line line2 = new Line ();
    line2.setStartX(200.0);
    line2.setStartY(180.0);
    line2.setEndX(270.0);
    line2.setEndY(160.0);
    line2.setStrokeWidth(15.0);
    line2.setStroke(Color.BLACK);
    Group root = new Group(circle,circle2,circle3,arc,line1,line2);
    Scene scene = new Scene(root,450,450);
    primaryStage.setTitle("Emoji Assignment");
    scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    //add the scene to the stage
    primaryStage.setScene(scene);
    //show the contents of the stage 
    primaryStage.show();
} catch(Exception e) {
    e.printStackTrace();
}

}



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

【问题讨论】:

    标签: java javafx javafx-8


    【解决方案1】:

    你可以做的一件事就是把所有东西都放在脸的中心。我改变了你的一些变量,以便他们的角色是明确的。另外,你发现了什么错误?

    示例代码:

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package javafxapplication34;
    
    import javafx.application.Application;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Arc;
    import javafx.scene.shape.ArcType;
    import javafx.scene.shape.Circle;
    import javafx.scene.shape.Line;
    
    public class TracyAssignment2Chap14 extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            double faceCenterX = 220.0;
            double faceCenterY = 220.0;
            double eyeYFromFaceCenter = 5.0;
            double eyeXFromFaceCenter = 80.0;
            double eyeBrowStartYFromFaceCenter = 40.0;
            double eyeBrowStartXFromFaceCenter = 40.0;
            double eyeBrowEndYFromFaceCenter = 70.0;
            double eyeBrowEndXFromFaceCenter = 80.0;
    
            Circle face = new Circle();
            face.setCenterX(faceCenterX);
            face.setCenterY(faceCenterY);
            face.setRadius(190.0);
            face.setFill(Color.YELLOW);
            face.setStrokeWidth(15.0);
            face.setStroke(Color.BLACK);
    
            Circle leftEye = new Circle();
            leftEye.setCenterX(faceCenterX - eyeXFromFaceCenter);
            leftEye.setCenterY(faceCenterY - eyeYFromFaceCenter);
            leftEye.setRadius(25.0);
            leftEye.setFill(Color.BLACK);
    
            Circle rightEye = new Circle();
            rightEye.setCenterX(faceCenterX + eyeXFromFaceCenter);
            rightEye.setCenterY(faceCenterY - eyeYFromFaceCenter);
            rightEye.setRadius(25.0);
            rightEye.setFill(Color.BLACK);
    
            Line leftEyebrow = new Line();
            leftEyebrow.setStartX(faceCenterX - eyeBrowStartXFromFaceCenter);
            leftEyebrow.setStartY(faceCenterY - eyeBrowStartYFromFaceCenter);
            leftEyebrow.setEndX(faceCenterX - eyeBrowEndXFromFaceCenter);
            leftEyebrow.setEndY(faceCenterY - eyeBrowEndYFromFaceCenter);
            leftEyebrow.setStrokeWidth(15.0);
            leftEyebrow.setStroke(Color.BLACK);
    
            Line RightEyebrow = new Line();
            RightEyebrow.setStartX(faceCenterX + eyeBrowStartXFromFaceCenter);
            RightEyebrow.setStartY(faceCenterY - eyeBrowStartYFromFaceCenter);
            RightEyebrow.setEndX(faceCenterX + eyeBrowEndXFromFaceCenter);
            RightEyebrow.setEndY(faceCenterY - eyeBrowEndYFromFaceCenter);
            RightEyebrow.setStrokeWidth(15.0);
            RightEyebrow.setStroke(Color.BLACK);
    
            Arc mouth = new Arc(faceCenterX, faceCenterY + 90, 80, 60, 0, 180);//(220,310,80,60,0,180);
            mouth.setFill(null);
            mouth.setStroke(Color.BLACK);
            mouth.setStrokeWidth(15.0);
            mouth.setType(ArcType.OPEN);
    
    //   
            Group root = new Group(face, leftEye, rightEye, leftEyebrow, RightEyebrow, mouth);
            Scene scene = new Scene(root, 450, 450);
            primaryStage.setTitle("Emoji Assignment");
            ///scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            //add the scene to the stage
            primaryStage.setScene(scene);
            //show the contents of the stage 
            primaryStage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多