Skip to content
Snippets Groups Projects
Commit 4e6386e6 authored by SAYEH Nahlane ghina's avatar SAYEH Nahlane ghina
Browse files

modification de ShapeContainer

parent 618e2124
No related branches found
No related tags found
No related merge requests found
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class BorderDecorator extends Decorator {
private double radius;
public BorderDecorator(Shape decoratedShape, double radius) {
super(decoratedShape);
this.radius = radius;
}
@Override
protected void drawDecoration(GraphicsContext context) {
context.setStroke(Color.RED); // Couleur de la bordure
for (int i = 0; i < decoratedShape.pointsCount(); i++) {
Point2D point = decoratedShape.point(i);
context.strokeOval(point.getX() - radius, point.getY() - radius, radius * 2, radius * 2);
}
}
}
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class CenterDecorator extends Decorator {
private double radius;
public CenterDecorator(Shape decoratedShape, double radius) {
super(decoratedShape);
this.radius = radius;
}
@Override
protected void drawDecoration(GraphicsContext context) {
context.setStroke(Color.BLUE); // Couleur du cercle du centre
// Calculer le centre de la forme
Point2D center = calculateCenter();
context.strokeOval(center.getX() - radius, center.getY() - radius, radius * 2, radius * 2);
}
// Méthode pour calculer le centre d'une forme
private Point2D calculateCenter() {
double sumX = 0, sumY = 0;
for (int i = 0; i < decoratedShape.pointsCount(); i++) {
Point2D point = decoratedShape.point(i);
sumX += point.getX();
sumY += point.getY();
}
return new Point2D(sumX / decoratedShape.pointsCount(), sumY / decoratedShape.pointsCount());
}
}
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
public abstract class Decorator implements Shape {
protected Shape decoratedShape;
public Decorator(Shape decoratedShape) {
this.decoratedShape = decoratedShape;
}
@Override
public int pointsCount() {
return decoratedShape.pointsCount();
}
@Override
public Point2D point(int index) {
return decoratedShape.point(index);
}
@Override
public void draw(GraphicsContext context) {
decoratedShape.draw(context);
drawDecoration(context); // Ajoute la décoration
}
protected abstract void drawDecoration(GraphicsContext context); // Méthode abstraite pour la décoration
}
......@@ -5,18 +5,18 @@ import java.util.ArrayList;
import java.util.List;
public class ShapeContainer {
private List<Shape> shapes = new ArrayList<>(); // Liste des formes
// Liste pour stocker les formes
private List<Shape> shapes = new ArrayList<>();
// Méthode pour ajouter une forme au conteneur
// Méthode pour ajouter une forme dans le conteneur
public void add(Shape shape) {
shapes.add(shape);
shapes.add(shape); // Ajoute la forme à la liste
}
// Méthode pour dessiner toutes les formes sur le canvas
// Méthode pour dessiner toutes les formes
public void draw(GraphicsContext context) {
for (Shape shape : shapes) {
shape.draw(context);
shape.draw(context); // Appelle la méthode draw de chaque forme
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment