Suggest a feature
×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Added: Jun 17, 2021 5:59 PM
Views: 49
Tags: javafx
  1. import javafx.application.*;
  2. import javafx.scene.*;
  3. import javafx.scene.canvas.*;
  4. import javafx.scene.paint.Color;
  5. import javafx.scene.shape.StrokeLineCap;
  6. import javafx.scene.shape.StrokeLineJoin;
  7. import javafx.stage.*;
  8.  
  9. import java.util.ArrayList;
  10. import java.util.Random;
  11.  
  12. // MainApp durch den eigenen Dateinamen ersetzen
  13. public class Main extends Application {
  14.     Canvas canvas;  // Zeichenbereich
  15.  
  16.     public static void main(String[] args) {
  17.         launch(args);
  18.     }
  19.  
  20.     @Override
  21.     public void start(Stage primaryStage) {
  22.         primaryStage.setTitle("Grafik mit JavaFX");
  23.         canvas = new Canvas(1000, 800);
  24.         var root = new Group();
  25.         root.getChildren().add(canvas);
  26.         primaryStage.setScene(new Scene(root));
  27.         primaryStage.setResizable(false);
  28.         primaryStage.show();
  29.         // todo: eigene Methode statt drawShapes() aufrufen
  30.         drawShapes();
  31.  
  32.     }
  33.  
  34.     // im Canvas zeichnen
  35.     private void drawShapes() {
  36.         var gc = canvas.getGraphicsContext2D();
  37.         double w = canvas.getWidth();
  38.         double h = canvas.getHeight();
  39.  
  40.         double x0,y0,x1,y1,x2,y2;
  41.         Color color;
  42.         double size = 150;
  43.         var r = new Random();
  44.  
  45.         for (int i = 0; i < 100; i++) {
  46.             // ArrayList erzeugen zum Speichern von unseren Dreiecken
  47.             var triangles = new ArrayList<Triangle>();
  48.  
  49.             // x --> horinzontal
  50.             double x = r.nextDouble()*(w - size);
  51.             // y --> vertikal
  52.             // size von w und h abziehen --> automatisch den abstand vom canvas rand
  53.             double y = r.nextDouble()*(h - size);
  54.             x0 = r.nextDouble()*size + x;
  55.             y0 = r.nextDouble()*size + y;
  56.             x1 = r.nextDouble()*size + x;
  57.             y1 = r.nextDouble()*size + y;
  58.             x2 = r.nextDouble()*size + x;
  59.             y2 = r.nextDouble()*size + y;
  60.             // Color erwartet Double Werte
  61.             color = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), 0.8);
  62.             triangles.add(new Triangle(x0,y0,x1,y1,x2,y2,color));
  63.  
  64.             for (var triangle :
  65.                     triangles) {
  66.                 triangle.draw(gc);
  67.             }
  68.  
  69.         }
  70.  
  71.     }
  72.  
  73.  
  74. }
  75.