Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • b21228304/graphic-2020-2-0
  • l21221596/graphic-2020
  • c19014407/graphic-2020
  • b23019494/graphic-2020
  • g21212987/graphic-2020
  • couetoux.b/graphic-2020
  • s22029480/graphic-2020
  • c23025119/tp-3-graphique
  • m19023837/graphic-2020-tp-5
  • s22029480/graphic-tp-4
  • m19023837/graphic-2020-tp-7
  • n22021899/tp-3-programmation-conception
  • r24025701/graphic-2020
  • a23022716/exo-2-tp-3-algo
  • m23000189/graphic-2024
  • b21228304/graphic-2020
  • t21234458/graphic-2020
  • v23014723/graphic-2020
  • h22021483/graphic-2020
  • t21234458/graphic-2020-tiakout-khaled
  • m19023837/graphic-2020-chadi
  • b20031964/graphic-2020
22 results
Select Git revision
  • master
1 result
Show changes
Commits on Source (5)
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractShape implements Shape {
protected List<Point2D> points = new ArrayList<>();
// Méthode pour ajouter des points à la forme
public void addPoints(Point2D... newPoints) {
for (Point2D point : newPoints) {
points.add(point);
}
}
@Override
public int pointsCount() {
return points.size();
}
@Override
public Point2D point(int index) {
return points.get(index);
}
@Override
public abstract void draw(GraphicsContext context); // Méthode abstraite pour dessiner la forme
}
......@@ -7,29 +7,44 @@ import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.stage.Stage;
public class App extends Application {
public static void main(String[] args) {
launch(args);
launch(args); // Lance l'application JavaFX
}
@Override
public void start(Stage primaryStage) {
// Créer un groupe racine pour contenir le Canvas
Group root = new Group();
Canvas canvas = new Canvas(130, 110);
// Créer un canvas sur lequel on va dessiner
Canvas canvas = new Canvas(300, 300);
GraphicsContext graphicsContext = canvas.getGraphicsContext2D();
// Créer un ShapeContainer pour stocker les formes
ShapeContainer shapeContainer = new ShapeContainer();
graphicsContext.setFill(Color.AQUAMARINE);
graphicsContext.fillOval(10,10,10,10);
shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40)));
// Ajouter des formes et appliquer des décorateurs
Shape polygon = new Polygon(Color.BLUE, new Point2D(50, 50), new Point2D(100, 50), new Point2D(75, 100));
Shape decoratedPolygon = new BorderDecorator(polygon, 10); // Ajouter une bordure au polygone
Shape centerDecoratedPolygon = new CenterDecorator(decoratedPolygon, 5); // Ajouter un cercle au centre
// Ajouter la forme décorée au conteneur
shapeContainer.add(centerDecoratedPolygon);
// Dessiner toutes les formes dans le GraphicsContext
shapeContainer.draw(graphicsContext);
// Ajouter le canvas au groupe racine
root.getChildren().add(canvas);
primaryStage.setScene(new Scene(root));
primaryStage.show();
// Créer une scène et l'ajouter à la fenêtre principale
Scene scene = new Scene(root, 300, 300);
primaryStage.setScene(scene);
primaryStage.setTitle("Dessin de Formes avec Décorateurs");
primaryStage.show(); // Afficher la fenêtre
}
}
\ No newline at end of file
}
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
}
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class Polygon extends AbstractShape {
private Color color;
public Polygon(Color color, Point2D... points) {
this.color = color;
addPoints(points); // Ajoute les points du polygone
}
@Override
public void draw(GraphicsContext context) {
context.setFill(color);
// Trace les côtés du polygone en reliant les points
context.beginPath();
Point2D firstPoint = points.get(0);
context.moveTo(firstPoint.getX(), firstPoint.getY());
for (int i = 1; i < points.size(); i++) {
Point2D point = points.get(i);
context.lineTo(point.getX(), point.getY());
}
context.closePath();
context.fill();
}
}
......@@ -4,6 +4,7 @@ import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
public interface Shape {
int pointsCount();
Point2D point(int index);
void draw(GraphicsContext context);
......
package shape;
import javafx.scene.canvas.GraphicsContext;
import java.util.ArrayList;
import java.util.List;
public class ShapeContainer{
public class ShapeContainer {
// Liste pour stocker les formes
private List<Shape> shapes = new ArrayList<>();
public void addShape(Shape shape){}
// Méthode pour ajouter une forme dans le conteneur
public void add(Shape shape) {
shapes.add(shape); // Ajoute la forme à la liste
}
public void draw(GraphicsContext context){
for(Shape shape : shapes)
shape.draw(context);
// Méthode pour dessiner toutes les formes
public void draw(GraphicsContext context) {
for (Shape shape : shapes) {
shape.draw(context); // Appelle la méthode draw de chaque forme
}
}
}