import javafx.application.*;
import javafx.scene.*;
import javafx.scene.canvas.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.shape.StrokeLineJoin;
import javafx.stage.*;
import java.util.ArrayList;
import java.util.Random;
// MainApp durch den eigenen Dateinamen ersetzen
public class Main extends Application {
Canvas canvas
; // Zeichenbereich
public static void main
(String[] args
) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Grafik mit JavaFX");
canvas
= new Canvas(1000,
800);
root.getChildren().add(canvas);
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.show();
// todo: eigene Methode statt drawShapes() aufrufen
drawShapes();
}
// im Canvas zeichnen
private void drawShapes() {
var gc = canvas.getGraphicsContext2D();
double w = canvas.getWidth();
double h = canvas.getHeight();
double x0,y0,x1,y1,x2,y2;
double size = 150;
for (int i = 0; i < 100; i++) {
// ArrayList erzeugen zum Speichern von unseren Dreiecken
var triangles = new ArrayList<Triangle>();
// x --> horinzontal
double x = r.nextDouble()*(w - size);
// y --> vertikal
// size von w und h abziehen --> automatisch den abstand vom canvas rand
double y = r.nextDouble()*(h - size);
x0 = r.nextDouble()*size + x;
y0 = r.nextDouble()*size + y;
x1 = r.nextDouble()*size + x;
y1 = r.nextDouble()*size + y;
x2 = r.nextDouble()*size + x;
y2 = r.nextDouble()*size + y;
// Color erwartet Double Werte
color
= new Color(r.
nextDouble(), r.
nextDouble(), r.
nextDouble(),
0.8);
triangles.add(new Triangle(x0,y0,x1,y1,x2,y2,color));
for (var triangle :
triangles) {
triangle.draw(gc);
}
}
}
}