public void drawWhiteEdge(Edge e) { // Graphics GraphicsContext gc = kochPanel.getGraphicsContext2D(); // Adjust edge for zoom and drag Edge e1 = edgeAfterZoomAndDrag(e); // Set line color gc.setStroke(Color.WHITE); // Set line width depending on level if (currentLevel <= 3) { gc.setLineWidth(2.0); } else if (currentLevel <= 5) { gc.setLineWidth(1.5); } else { gc.setLineWidth(1.0); } // Draw line gc.strokeLine(e1.X1, e1.Y1, e1.X2, e1.Y2); }
@Override public void start(Stage primaryStage) { // Define grid pane GridPane grid; grid = new GridPane(); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); // For debug purposes // Make de grid lines visible // grid.setGridLinesVisible(true); // Drawing panel for Koch fractal kochPanel = new Canvas(kpWidth, kpHeight); grid.add(kochPanel, 0, 4, 25, 1); // Labels to present number of edges for Koch fractal labelNrEdges = new Label("Nr edges:"); labelNrEdgesText = new Label(); grid.add(labelNrEdges, 0, 0, 4, 1); grid.add(labelNrEdgesText, 3, 0, 22, 1); // Labels to present time of calculation for Koch fractal labelCalc = new Label("Calculating:"); labelCalcText = new Label(); grid.add(labelCalc, 0, 1, 4, 1); grid.add(labelCalcText, 3, 1, 22, 1); // Labels to present time of drawing for Koch fractal labelDraw = new Label("Drawing:"); labelDrawText = new Label(); grid.add(labelDraw, 0, 2, 4, 1); grid.add(labelDrawText, 3, 2, 22, 1); // Label to present current level of Koch fractal labelLevel = new Label("Level: " + currentLevel); grid.add(labelLevel, 0, 6); // Button to increase level of Koch fractal Button buttonIncreaseLevel = new Button(); buttonIncreaseLevel.setText("Increase Level"); buttonIncreaseLevel.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { increaseLevelButtonActionPerformed(event); } }); grid.add(buttonIncreaseLevel, 3, 6); // Button to decrease level of Koch fractal Button buttonDecreaseLevel = new Button(); buttonDecreaseLevel.setText("Decrease Level"); buttonDecreaseLevel.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { decreaseLevelButtonActionPerformed(event); } }); grid.add(buttonDecreaseLevel, 5, 6); // Button to fit Koch fractal in Koch panel Button buttonFitFractal = new Button(); buttonFitFractal.setText("Fit Fractal"); buttonFitFractal.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { fitFractalButtonActionPerformed(event); } }); grid.add(buttonFitFractal, 14, 6); // Add mouse clicked event to Koch panel kochPanel.addEventHandler( MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { kochPanelMouseClicked(event); } }); // Add mouse pressed event to Koch panel kochPanel.addEventHandler( MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { kochPanelMousePressed(event); } }); // Add mouse dragged event to Koch panel kochPanel.setOnMouseDragged( new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { kochPanelMouseDragged(event); } }); // Adding progress bars and their info Label LeftLabel = new Label("Left Progress"); lblLeftCalc = new Label(". . . . ."); grid.add(lblLeftCalc, 7, 10); grid.add(LeftLabel, 1, 5); grid.add(progressBarLeft, 2, 5); Label RightLabel = new Label("Right Progress"); lblRightCalc = new Label(". . . . ."); grid.add(lblRightCalc, 7, 11); grid.add(RightLabel, 1, 6); grid.add(progressBarRight, 2, 6); Label BottomLabel = new Label("Bottom Progress"); lblBottomCalc = new Label(". . . . ."); grid.add(lblBottomCalc, 7, 12); grid.add(BottomLabel, 1, 7); grid.add(progressBarBottom, 2, 7); // Create Koch manager and set initial level resetZoom(); kochManager = new KochManager(this); kochManager.ChangeLevel(currentLevel); // Create the scene and add the grid pane Group root = new Group(); Scene scene = new Scene(root, kpWidth + 50, kpHeight + 170); root.getChildren().add(grid); // Define title and assign the scene for main window primaryStage.setTitle("Koch Fractal"); primaryStage.setScene(scene); primaryStage.show(); }
public void clearKochPanel() { GraphicsContext gc = kochPanel.getGraphicsContext2D(); gc.clearRect(0.0, 0.0, kpWidth, kpHeight); gc.setFill(Color.BLACK); gc.fillRect(0.0, 0.0, kpWidth, kpHeight); }