diff --git a/app/src/main/java/com/example/visualisation/Acces.java b/app/src/main/java/com/example/visualisation/Acces.java
index 7627a1db5753547f2cb7e5c328b1de3b9ec5f2eb..b7aaee64cb09960c1322bdc8b99c775c79f5f3e4 100644
--- a/app/src/main/java/com/example/visualisation/Acces.java
+++ b/app/src/main/java/com/example/visualisation/Acces.java
@@ -1,24 +1,34 @@
 package com.example.visualisation;
 
+import android.graphics.Rect;
+
 import java.io.Serializable;
 
 public class Acces implements Serializable {
 
-    private String piece1;
-    private String piece2;
+    private String nom;
+    private String piece;
     private int[] coord;
 
-    public Acces(String piece1, int[] coord) {
-        this.piece1 = piece1;
-        this.piece2 = "";
+    public Acces(String nom, String piece, int[] coord) {
+        this.nom = nom;
+        this.piece = piece;
         this.coord = coord;
     }
 
-    public void setPiece2(String piece2) {
-        this.piece2 = piece2;
+    public void setPiece(String piece) {
+        this.piece = piece;
     }
 
     public int[] getCoord() {
         return this.coord;
     }
+
+    public String getPiece() {
+        return piece;
+    }
+
+    public String getNom() {
+        return nom;
+    }
 }
diff --git a/app/src/main/java/com/example/visualisation/MainActivity.java b/app/src/main/java/com/example/visualisation/MainActivity.java
index eb078186177fcb1033bb36b49902ebf4445e44ca..2f16aa18c84d1ba4e5a6ec092b4296928ec134c4 100644
--- a/app/src/main/java/com/example/visualisation/MainActivity.java
+++ b/app/src/main/java/com/example/visualisation/MainActivity.java
@@ -8,6 +8,7 @@ import android.app.Activity;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
diff --git a/app/src/main/java/com/example/visualisation/Photo.java b/app/src/main/java/com/example/visualisation/Photo.java
index 0b03d9540f2393735656a74e49745d64b0439280..c71550f7a4fda4e9a2717547270e3b415026d500 100644
--- a/app/src/main/java/com/example/visualisation/Photo.java
+++ b/app/src/main/java/com/example/visualisation/Photo.java
@@ -1,5 +1,7 @@
 package com.example.visualisation;
 
+import android.graphics.Rect;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 
@@ -13,6 +15,13 @@ public class Photo implements Serializable {
         this.acces = new ArrayList<>();
     }
 
+    public void setNomAcces(Acces acces, String nom) {
+        for (Acces a : this.acces) {
+            if (a.equals(acces)) {
+                a.setPiece(nom);
+            }
+        }
+    }
     public int getNbAcces() {
         return acces.size();
     }
@@ -29,8 +38,12 @@ public class Photo implements Serializable {
         return acces;
     }
 
-    public void ajouterAcces(String piece1, int[] coord) {
-        Acces nouvelAcces = new Acces(piece1, coord);
+    public void ajouterAcces(String nom, String piece, int[] coord) {
+        Acces nouvelAcces = new Acces(nom, piece, coord);
         this.acces.add(nouvelAcces);
     }
+
+    public void ajouterAcces(Acces acces) {
+        this.acces.add(acces);
+    }
 }
diff --git a/app/src/main/java/com/example/visualisation/Piece.java b/app/src/main/java/com/example/visualisation/Piece.java
index d350df51946976f7bfc64b3baf912de1dad40df6..557606f290db75d80edcdef1f1d9c55c7d05f5c3 100644
--- a/app/src/main/java/com/example/visualisation/Piece.java
+++ b/app/src/main/java/com/example/visualisation/Piece.java
@@ -46,4 +46,8 @@ public class Piece implements Serializable {
     public void setPath(int indice, String path) {
         this.photos.get(indice).setPath(path);
     }
+
+    public ArrayList<Photo> getPhotos() {
+        return photos;
+    }
 }
diff --git a/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java b/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java
index bc6579f3050822b6af5a2a717fcca29aca940585..4aa0a6bb04555e161155562687c15fd74c9e21b9 100644
--- a/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java
+++ b/app/src/main/java/com/example/visualisation/PieceDetailsActivity.java
@@ -1,23 +1,43 @@
 package com.example.visualisation;
 
+import android.Manifest;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
+import android.graphics.Rect;
 import android.os.Bundle;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
+import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
 
 
-public class PieceDetailsActivity extends AppCompatActivity {
+public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHolder.Callback {
 
+    private static final int REQUEST_WRITE_EXTERNAL_STORAGE = 1;
     private TextView nomPiece;
     private ImageView imageView;
     private Modele modele;
-    private Piece pieceDepart;
+    private Piece piece;
     private int indicePhoto;
+    private SurfaceView surfaceView;
+    private SurfaceHolder surfaceHolder;
+    private Paint paint;
+    private Rect rect;
 
 
     @Override
@@ -33,10 +53,54 @@ public class PieceDetailsActivity extends AppCompatActivity {
         Intent intent = getIntent();
         if (intent != null) {
             modele = (Modele) intent.getSerializableExtra("modele");
-            pieceDepart = (Piece) intent.getSerializableExtra("piece");
-            nomPiece.setText(pieceDepart.getNom());
+            piece = (Piece) intent.getSerializableExtra("piece");
+            nomPiece.setText(piece.getNom());
+        }
+
+        surfaceView = findViewById(R.id.surfaceView);
+        surfaceView.setZOrderOnTop(true);
+        surfaceHolder = surfaceView.getHolder();
+        surfaceHolder.setFormat(PixelFormat.TRANSPARENT);
+        surfaceHolder.addCallback(this);
+
+        paint = new Paint();
+        paint.setColor(Color.RED);
+        paint.setStrokeWidth(5);
+        paint.setTextSize(40);
+        paint.setStyle(Paint.Style.STROKE);
+
+        afficherPhoto();
+    }
 
-            afficherPhoto();
+    private void dessinerRect() {
+        //surfaceHolder = surfaceView.getHolder();
+        if (surfaceHolder != null) {
+            Canvas canvas = surfaceHolder.lockCanvas();
+            if (canvas != null) {
+                try {
+                    canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
+                    Photo photo = piece.getPhoto(indicePhoto);
+                    for (Acces acces : photo.getAcces()) {
+                        Log.d("a", "" + acces.getPiece());
+                        int[] coord = acces.getCoord();
+                        Rect accesRect = new Rect(coord[0], coord[1], coord[2], coord[3]);
+                        paint.setStrokeWidth(5);
+                        canvas.drawRect(accesRect, paint);
+                        paint.setStrokeWidth(2);
+                        if (acces.getPiece() == "") {
+                            canvas.drawText(acces.getNom(), accesRect.centerX(), accesRect.centerY(), paint);
+                        } else {
+                            canvas.drawText(acces.getPiece(), accesRect.centerX(), accesRect.centerY(), paint);
+                        }
+                    }
+                } finally {
+                    surfaceHolder.unlockCanvasAndPost(canvas);
+                }
+            } else {
+                Log.d("erreur canvas", "x");
+            }
+        } else {
+            Log.d("erreur holder", "x");
         }
     }
 
@@ -62,11 +126,44 @@ public class PieceDetailsActivity extends AppCompatActivity {
         imageView.setImageResource(R.drawable.ajouter_photo);
         imageView.setAdjustViewBounds(true);
 
-        String path = pieceDepart.getPhoto(indicePhoto).getPath();
-        if (path != "") {
-            Bitmap bitmap = BitmapFactory.decodeFile(getFilesDir() + "/" + path);
-            imageView.setImageBitmap(bitmap);
-            imageView.setAdjustViewBounds(true);
+        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_EXTERNAL_STORAGE);
+        } else {
+            String path = piece.getPhoto(indicePhoto).getPath();
+            if (path != "") {
+                Log.d("Acces", "chemin : " + path);
+                Bitmap bitmap = BitmapFactory.decodeFile(path);
+                imageView.setImageBitmap(bitmap);
+                imageView.setAdjustViewBounds(true);
+            }
+        }
+        dessinerRect();
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        if (requestCode == REQUEST_WRITE_EXTERNAL_STORAGE) {
+            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+                afficherPhoto();
+            } else {
+                Toast.makeText(this, "Autorisation pour stockage externe refusée", Toast.LENGTH_SHORT).show();
+            }
         }
     }
+
+    @Override
+    public void surfaceCreated(@NonNull SurfaceHolder holder) {
+        dessinerRect();
+    }
+
+    @Override
+    public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
+
+    }
+
+    @Override
+    public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
+
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_piece_details.xml b/app/src/main/res/layout/activity_piece_details.xml
index e15b51850535985378004c469e3cbce0d9d678c4..908157d15aec3ae46258fe58fda72463b8c11900 100644
--- a/app/src/main/res/layout/activity_piece_details.xml
+++ b/app/src/main/res/layout/activity_piece_details.xml
@@ -7,6 +7,11 @@
     android:layout_height="match_parent"
     tools:context=".PieceDetailsActivity">
 
+    <SurfaceView
+        android:id="@+id/surfaceView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
     <LinearLayout
         android:id="@+id/mainLayout"
         android:layout_width="match_parent"
@@ -27,16 +32,14 @@
         <ImageView
             android:id="@+id/imageView"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:adjustViewBounds="true"
-            android:onClick="choixPhoto" />
+            android:layout_height="600dp"
+            android:layout_gravity="center_horizontal"
+            android:adjustViewBounds="true" />
 
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
             android:orientation="horizontal"
             android:gravity="center_horizontal" >