@Override
	public void paintComponent(Graphics g, PanelGraph panelGraph, Crayon trace) {
		Rectangle2D.Double rec = new Rectangle2D.Double(p1.abscisse(), p1.ordonnee(), longueur, largeur);
		Graphics2D gra = (Graphics2D) g;
		if (dessiner) {
			gra.setColor(trace.getCouleur());
			gra.setStroke(new BasicStroke((float)trace.getEpaisseur()));
			gra.draw(rec);
		}
		if (remplir) {
			gra.setColor(this.remplissage);
			gra.fill(rec);
		}
		if (inserer != null) {
			Rectangle2D rec1 = inserer.getShape().getBounds2D();
			
			if (rec.contains(p1.abscisse(),p1.ordonnee(),rec1.getMaxX()-rec1.getMinX(),rec1.getMaxY()-rec1.getMinY())) {
				if (inserer instanceof Cercle) {
					Point centre = new Point(p1.abscisse()+longueur/2, p1.ordonnee()+largeur/2);
					Cercle c = (Cercle)inserer;
					Ellipse2D.Double cercle = new Ellipse2D.Double(centre.abscisse()-c.getRayon(), centre.ordonnee()-c.getRayon(), 2*c.getRayon(), 2*c.getRayon());
					gra.draw(cercle);
				}
				if (inserer instanceof Rectangle) {
					Point centre = new Point(p1.abscisse()+longueur/2, p1.ordonnee()+largeur/2);
					Rectangle r = (Rectangle)inserer;
					Rectangle2D.Double rectangle = new Rectangle2D.Double(centre.abscisse()-r.getLongueur()/2, centre.ordonnee() - r.getLargeur()/2, r.getLongueur(), r.getLargeur());
					gra.draw(rectangle);

				}
			}
			
		}
		
	}