如何使用javafx中的GridPane制作圆形的金字塔图案

问题描述 投票:0回答:1

我想使用GridPane中的Circle形状创建金字塔的左,右,中心角,我已经完成了左角的工作,但是花了2天的时间来创建右和中角而没有运气。

如果有人知道或可以给我一些算法的想法,我将非常感谢,请帮助我!

输出已完成的左角

enter image description here

使用以下代码

        int i, j;
        for (i = 0; i < n; i++) {
            for (j = 0; j <= i; j++) {
                Circle circle = new Circle();
                circle.setStroke(Paint.valueOf(Color.BLACK.toString()));
                circle.radiusProperty().bind(ballsModel.radiusProperty());
                circle.strokeWidthProperty().bind(ballsModel.strokeProperty());
                circle.fillProperty().bind(Bindings.createObjectBinding(() -> Paint.valueOf(ballsModel.getColor().name())));
                grid.addRow(i, circle);
            }
        }

需要弄清楚以下模式:

中心角enter image description here

直角enter image description here

javafx geometry gridpane
1个回答
0
投票

金字塔部分的示例

package pyramid;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;


public class Pyramid extends Application {



   void createPyramid(){
   gridPane.setHgap(5);
   gridPane.setVgap(5);
   int center = 4 ;


   for (int row = 0; row <= 4; row++ ) {

      int  range = (1 +(2* row));

      int  startColumn = center-range/2 ;

       for(int i = 0 ; i<range; i++){
           Circle circle  = new Circle(20,javafx.scene.paint.Color.BLUE);
           gridPane.add(circle,startColumn+i , row);

       }     

   }} 

@Override
public void start(Stage primaryStage) {


    StackPane root = new StackPane();
    root.getChildren().add(gridPane);
    this.createPyramid();

    Scene scene = new Scene(root, 600, 600);

    primaryStage.setTitle("Pyramid");
    primaryStage.setScene(scene);
    primaryStage.show();
}


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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.