POO & Design Patterns

Présentation de l'application UGE Paint

Youssef Bergeron et Arnaud Carayol

UGE Paint

Le but de la série des TPs est de créer un application qui va dessiner des formes géométriques lues dans une fichier.

Les questions sont progressives. Dans un but pédagogique, on vous demande:

  • n'essayez pas d'anticiper sur les prochaines questions,
  • il y aura beaucoup de refactoring mais c'est normal,
  • essayez juste de faire le code le plus propre possible.

La libraire SimpleGraphics

public class SimpleGraphicsExample {
    private static void drawAll(Graphics2D graphics) {
        graphics.setColor(Color.BLACK);
        graphics.drawRect(100, 20, 40, 140);
        graphics.drawRect(50, 50, 0, 100);

    }

    public static void main(String[] args) {
        // création d'une fenêtre de 800x600
        SimpleGraphics area = new SimpleGraphics("area", 800, 600);
        // effacement de la fenêtre 
        area.clear(Color.WHITE);
        // dessin de deux rectangles
        area.render(SimpleGraphicsExample::drawAll);
        //canvas.render(graphics -> drawAll(graphics));
    }
}

L'appel à la méthode render va appliquer toutes les transformations de la lambda avant de réafficher.

La libraire SimpleGraphics (1/2)

public class SimpleGraphicsExample {
    private static void drawAll(Graphics2D graphics) {
        graphics.setColor(Color.BLACK);
        graphics.drawRect(100, 20, 40, 140);
        graphics.drawRect(50, 50, 0, 100);

    }

    public static void main(String[] args) {
        // création d'une fenêtre de 800x600
        SimpleGraphics area = new SimpleGraphics("area", 800, 600);
        // effacement de la fenêtre 
        area.clear(Color.WHITE);
        // dessin de deux rectangles
        area.render(SimpleGraphicsExample::drawAll);
        //canvas.render(graphics -> drawAll(graphics));
    }
}

L'appel à la méthode render va appliquer toutes les transformations de la lambda avant de réafficher.

La libraire SimpleGraphics (2/2)

Les dessins se font sur un objet Graphics2D.

On peut dessiner:

  • une droite : drawLine(x1,y1,x2,y2)
  • un rectangle : drawRectangle(x,y,width,height)
  • une ellipse : drawOval(x,y,width,height)
    On donne le rectangle qui englobe l'ellipse.