Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insérer des images dans CANVAS

    19 janvier 2023 à 3:31:59

    Bonsoir,

    J'aimerai insérer une image dans mon CANVAS, mais je n'y arrive pas. Pour informations, je suis débutante.

    Voici mon code.

    let canvas = document.querySelector('canvas')
    canvas.width = 1000
    canvas.height = 600
    let ctx = canvas.getContext('2d')
    var canevas = document.getElementById('canvas');
    
    
    ctx.font='25pt Masvis, serif';
    //ctx.textBaseline="bottom";
    ctx.fillStyle='black';
    ctx.fillText('LAURA', 80, 200);
    ctx.fillText('LORIS', 80, 290);
    
    ctx.font='25pt a auto signature, serif';
    ctx.fillText('and', 90, 240);
    
    ctx.font='15pt Verdana, Arial, serif';
    ctx.fillText('12.10.2022', 80, 350);
    
    function setupCanvas(){
        var canvas = document.getElementById('canvas');
        if(canvas.getContext){
            layout = canvas.getContext('2d');
            var img = new Image();
            img.src = 'https://cdn.shopify.com/s/files/1/0624/4181/6291/files/40.png?v=1673006103';
            img.onload = function(){
                layout.drawImage(img,100,100)
            }
        }
    }


    Merci à ceux qui pourront me venir en aide.

    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2023 à 8:48:49

      Bonjour, tu peux sélectionner une seule fois le canvas normalement, les sélection additionnelle sont superflu.

      Dans le code que tu montres la fonction setupCanvas n'est jamais exécutée.

      Il manque des paramètre à la fonction drawImage.

      Ci-dessous le même code que le tiens sans les séléction superflues:

      const canvas = document.querySelector('canvas')
      const ctx = canvas.getContext('2d')
      
      canvas.width = 1000
      canvas.height = 600
      
      ctx.font='25pt Masvis, serif';
      //ctx.textBaseline="bottom";
      ctx.fillStyle='black';
      ctx.fillText('LAURA', 80, 200);
      ctx.fillText('LORIS', 80, 290);
       
      ctx.font='25pt a auto signature, serif';
      ctx.fillText('and', 90, 240);
       
      ctx.font='15pt Verdana, Arial, serif';
      ctx.fillText('12.10.2022', 80, 350);
      
       
      function setupCanvas(){
      
          const img = new Image();
          img.src = 'https://cdn.shopify.com/s/files/1/0624/4181/6291/files/40.png?v=1673006103';
          img.addEventListener("load", function(){
              ctx.drawImage(img,100,100);
          })
      }


      La méthode drawImage attend jusqu'à 9 paramètres

      Si tu veux  afficher l'image sur toute la place disponible dans ton canvas tu peux l'écrire:

      ctx.drawImage(img, 0,0, 1000, 600, 0, 0, 1000, 600);

      La fonction drawImage sélectionne un morceau d'une image et copie le morceau de l'image dans le canvas.

      On peut lire l'appel à drawImage de cette manière:

      Dans l'image img depuis les coordonnées X 0 et Y 0 prend 1000 pixels pour X et 600 pixels pour Y puis dessine l'image dans le canvas à partir des coordonnées X 0 et Y 0 et prend 1000 pixels pour X et 600 pixels pour Y.

       Dans l'exemple j'ai pris 1000 pixels  pour X et 600 pour Y car ça correspond au dimension de ton canvas:

      canvas.width = 1000
      canvas.height = 600

      L'image remplira l'entièreté du canvas lorsque tu exécuteras la fonction setupCanvas.

      A noter si tu appels la fonction setupCanvas après avoir dessiner le texte (où dessiner d'autre éléments) de cette façon par exemple:

      const canvas = document.querySelector('canvas')
      const ctx = canvas.getContext('2d')
      
      canvas.width = 1000
      canvas.height = 600
      
      
      ctx.font='25pt Masvis, serif';
      //ctx.textBaseline="bottom";
      ctx.fillStyle='black';
      ctx.fillText('LAURA', 80, 200);
      ctx.fillText('LORIS', 80, 290);
       
      ctx.font='25pt a auto signature, serif';
      ctx.fillText('and', 90, 240);
       
      ctx.font='15pt Verdana, Arial, serif';
      ctx.fillText('12.10.2022', 80, 350);
       
      function setupCanvas(){
      
          const img = new Image();
          img.src = 'https://cdn.shopify.com/s/files/1/0624/4181/6291/files/40.png?v=1673006103';
          img.addEventListener("load", function(){
              ctx.drawImage(
                  img,
                  0,0, 1000, 600,
                  0, 0, 1000, 600
      		);
          })
      }
      
      setupCanvas()


       Dans l'exemple ci-dessus j'ai appelé setupCanvas à la toute fin du script.

      L'image sera bien dessiner dans le canvas par contre le texte que tu avais ajouté n'est plus visible.

      C'est parce que l'image "chevauche" du coup on ne voit plus le texte (le texte est derrière l'image).

      Quand on dessine dans un canvas si 2 élément vienne ce "chevauché" c'est l'élément dessiner en dernier qui aura la priorité.

       Donc dans ton cas il faut d'abord dessiner l'image puis ensuite dessiner le texte par-dessus l'image:

      const canvas = document.querySelector('canvas')
      const ctx = canvas.getContext('2d')
      
      canvas.width = 1000
      canvas.height = 600
       
      function setupCanvas(){
      
          const img = new Image();
          img.src = 'https://cdn.shopify.com/s/files/1/0624/4181/6291/files/40.png?v=1673006103';
          img.addEventListener("load", function(){
              ctx.drawImage(
                  img,
                  0,0, 1000, 600,
                  0, 0, 1000, 600
      		);
          })
      }
      
      // DESSINE L'IMAGE DE FOND:
      setupCanvas()
      
      // DESSINE LE TEXTE PAR DESSUS L'IMAGE DE FOND:
      ctx.font='25pt Masvis, serif';
      //ctx.textBaseline="bottom";
      ctx.fillStyle='black';
      ctx.fillText('LAURA', 80, 200);
      ctx.fillText('LORIS', 80, 290);
       
      ctx.font='25pt a auto signature, serif';
      ctx.fillText('and', 90, 240);
       
      ctx.font='15pt Verdana, Arial, serif';
      ctx.fillText('12.10.2022', 80, 350);
      



      • Partager sur Facebook
      • Partager sur Twitter

      suggestion de présentation.

        19 janvier 2023 à 11:22:58

        Bonjour SamuelGaborieau3,

        Merci beaucoup pour tes explications ! ça fonctionne !

        Je me permets d'abuser un peu de ta gentillesse pour savoir comment je peux faire pour afficher plusieurs teintes ou typographies différentes dans mon canvas en fonction de ma sélection.

        En fait, je souhaite créer une pop-up d'options de personnalisation et j'aimerai que ces choix puissent être visibles si je clique dessus.

        Je ne sais pas si je suis assez claire ! En tout cas, merci encore pour ton aide !

        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2023 à 16:22:53

          Bonjour, c'est pas très clair je pense comprendre (au moins partiellement) ce que tu veux faire.

          Pour la popup en principe tu peux la faire dans une structure HTML standard avec quelque chose comme cela:

          <div id="pop-up-settings-canvas">
          
          	<form>
              	<div>
                  	<label for="option-1">option 1:</label>
                    <input type="checkbox" id="option-1" name="option-1" /> 
                  </div>
                  
                      	<div>
                  	<label for="option-2">option 2:</label>
                      <input type="checkbox" id="option-2" name="option-2" /> 
                  </div>
              </form>
          
          </div>

          Où tu as des champs de formulaire qui servent à paramétrer ton canvas,

          il faudra évidement ajuster les champs de formulaire est éventuellement ajouter un peu de CSS pour le mettre en forme.

          Côté Javascript tu peux traiter les champs de formulaire 1 par 1 et exécuter le code souhaiter dans un écouteur d'événement.

          Typiquement pour une case à cocher tu peux faire cela:

          // selectionne un champs de formulaire (une case à coché)
          const option1 = document.querySelector("#option-1")
          
          
          // ajoute un écouteur d'événement sur la case à coché
          option1.addEventListener("change", function() {
          	
            // lorsque la case à coché change d'état:
            
            if(option1.checked) {
              // l'option 1 vient d'être cochée
              // redessine le canvas pour l'option 1 activée:
          		
              // ...
              
            } else {
            	// l'option 1 vient d'être décochée
              // redessine le canvas pour l'option 1 désactivée:
              
              // ...
            }
            
          
          })

          On sélectionne la case à cocher on écouter les clique sur la case à cocher,

          lors d'un clique on vérifie l'état de la case (coché où non coché) puis on mettrait à jour le canvas en fonction du paramètre à la place des 3 petits points.

          En principe tu devrais remplacer les 3 petits point par l'appel à une fonction qui vide ton canvas (donc qui le rend comme à son état d'origine a l'aide de la méthode ctx.clearRect) puis qui re dessine le canvas en prenant en compte les paramètres qui on changés.

          Il faudrait que tout ton code qui manipule le canvas  soit dans une fonction pour que tu puisse la ré exécuter quand tu en as besoin:

          const canvas = document.querySelector('canvas')
          const ctx = canvas.getContext('2d')
          
          
          canvas.width = 1000
          canvas.height = 600
          
          
          // la fonction qui déssine l'image de fond du canvas
          // a noter que le nom de cette fonctione ne correspond pas à son role
          // elle pourrait s'appelait `drawBackgroundImage` par exemple.
          function setupCanvas(){
          
              const img = new Image();
              img.src = 'https://cdn.shopify.com/s/files/1/0624/4181/6291/files/40.png?v=1673006103';
              img.addEventListener("load", function(){
                  ctx.drawImage(
                      img,
                      0,0, 1000, 600,
                      0, 0, 1000, 600
                  );
              })
          }
          
          
          // la fonction qui nettoit le canvas
          // cette fonction vide tous ce qui est déssiner dans le canvas
          function clean() {
          	
          	ctx.clearRect(0, 0, canvas.width, canvas.height);
          }
          
          // la fonction qui dessine tout le canvas
          function draw() {
          
          	// avant de déssiner dans le canvas on vide ce qui peut se trouver dedans:
              clean();
          
          	// DESSINE L'IMAGE DE FOND:
              setupCanvas()
          
              // DESSINE LE TEXTE PAR DESSUS L'IMAGE DE FOND:
              ctx.font='25pt Masvis, serif';
              //ctx.textBaseline="bottom";
              ctx.fillStyle='black';
              ctx.fillText('LAURA', 80, 200);
              ctx.fillText('LORIS', 80, 290);
          
              ctx.font='25pt a auto signature, serif';
              ctx.fillText('and', 90, 240);
          
              ctx.font='15pt Verdana, Arial, serif';
              ctx.fillText('12.10.2022', 80, 350);
          }
          
          
          
          // déssine le canvas
          draw()

          Le code ci-dessous fait la même chose que le code précédent il est juste rangé différemment.

          Tu peux ensuite définir des options et des valeurs par défaut, qui seront utilisé par le canvas et que tu pourras modifier depuis la popup de settings:

          // définit les options qui seront utiliser par le canvas
          const canvasOptions = {
          	option1: true,
              option2: false
          }

          Ci-dessus un exemple d'options évidement il faudra changer le noms des options.

          Puis utiliser ses valeurs dans ta fonction draw avec des branchements conditionnelles:

          // la fonction qui dessine tout le canvas
          function draw() {
          
          	// avant de déssiner dans le canvas on vide ce qui peut se trouver dedans:
              clean();
          
          	// DESSINE L'IMAGE DE FOND:
              setupCanvas()
          
              // DESSINE LE TEXTE PAR DESSUS L'IMAGE DE FOND:
              ctx.font='25pt Masvis, serif';
              //ctx.textBaseline="bottom";
              ctx.fillStyle='black';
              ctx.fillText('LAURA', 80, 200);
              ctx.fillText('LORIS', 80, 290);
          
              ctx.font='25pt a auto signature, serif';
              ctx.fillText('and', 90, 240);
          
              ctx.font='15pt Verdana, Arial, serif';
              ctx.fillText('12.10.2022', 80, 350);
              
              // ...
              // ...
              
              if(canvasOptions.option1) {
              	// si l'option "option1" est activé dessine un truc:
                  // ...
              } else {
              	// sinon si l'option "option1" est désactivé dessine un autre truc
                  // ...
              }
          }

          Le code ci-dessous reprend la fonction draw est illustre comment les options pourrait être utilisé pour rendre dynamique le canvas.

          Et puis la dernière chose à faire c'est de mettre à jour tes options et appelé la fonction draw dans les événements de tes champs de formulaire:

          // selectionne un champs de formulaire (une case à coché)
          const option1 = document.querySelector("#option-1")
          
          
          // ajoute un écouteur d'événement sur la case à coché
          option1.addEventListener("change", function() {
          	
            // lorsque la case à coché change d'état:
            
            if(option1.checked) {
              // l'option 1 vient d'être cochée
              // redessine le canvas pour l'option 1 activée:
          	
              canvasOptions.option1 = true
              draw()
              
              
            } else {
            	// l'option 1 vient d'être décochée
              // redessine le canvas pour l'option 1 désactivée:
              
              canvasOptions.option1 = false
              draw()
            }
            
          
          })

          Le code ci-dessus reprend la gestion des champs de formulaire en remplaçant les 3 petits point par:

          1 - une mise à jour des options utilisé par le canvas

          2 - un appel à la fonction qui re dessine le canvas

          C'est ce qui permet de mettre le canvas à jour est donc de le rendre dynamique.




          -
          Edité par SamuelGaborieau3 19 janvier 2023 à 16:25:58

          • Partager sur Facebook
          • Partager sur Twitter

          suggestion de présentation.

            20 janvier 2023 à 21:03:42

            Bonsoir SamuelGaborieau3,

            Merci encore pour ton aide, pour toutes ces précisions et ta patience par rapport à mes questions. 🙏👍

            Mais en fait, mon véritable problème c'est la sélection de couleurs ou de typographies stylisés en css et que j'aimerai (comme ce que tu m'as indiqué avec le checkbox).

            Sauf qu'en utilisant le champ checkbox, j'ai une case à cocher alors que pour mon cas, j'aimerai simplement pouvoir cliquer sur l'image et avoir par la suite les mêmes fonctionnalités qu'avec la checkbox, c'est à dire pour la sélectionner et la désélectionner.

            voici un peu les options que j'ai mises en place en html :

             <form action="entry-text1">
                        
                                <label for="topinput">Choix du Premier texte</label >
                                <input type="text" name="Texte de la première ligne" id="firstinput"
                                placeholder="Bienvenue au mariage de" size="60">
                        </form>   
                        <h4>Couleurs du premier texte</h4>
                            <div class="couleursdetexte1">
                                
                                    <div class="couleur1"></div>    
                                    <div class="couleur2"></div> 
                                    <div class="couleur3"></div> 
                                    <div class="couleur4"></div> 
                                    <div class="couleur5"></div> 
                            </div>

            et en css ;

            .couleur1{
                content: "";
                width: 2rem;
                height: 2rem;
                border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                border: 1px solid #000000;
                background-color: #000000;
                display: flex;
                flex-wrap: wrap;
                margin-left: 10px;
                cursor: pointer;
            }
            
            .couleur2{
                content: "";
                width: 2rem;
                height: 2rem;
                border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                border: 1px solid #000000;
                background-color: #ffffff;
                display: flex;
                flex-wrap: wrap;
                margin-left: 10px;
                cursor: pointer;
            }
            
            .couleur3{
                content: "";
                width: 2rem;
                height: 2rem;
                border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                border: 1px solid #000000;
                background-color: #F2DEA0;
                display: flex;
                flex-wrap: wrap;
                margin-left: 10px;
                cursor: pointer;
            }
            
            .couleur4{
                content: "";
                width: 2rem;
                height: 2rem;
                border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                border: 1px solid #000000;
               background-color: #8D8E93;
                display: flex;
                flex-wrap: wrap;
                margin-left: 10px;
                cursor: pointer;
            }
            
            .couleur5{
                content: "";
                width: 2rem;
                height: 2rem;
                border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                border: 1px solid #000000;
                background-color:#fad2d3 ;
                display: flex;
                flex-wrap: wrap;
                margin-left: 10px;
                cursor: pointer;


            J'ai créé la même chose pour mes différences typographies :

            <div class="polices"><br>
                            <div class="aautosignature">
                                <img src="img\a_auto_signature.png" alt="police a_auto_signature" width="100"></div>
                            <div class="aftesto">
                                <img src="img\aftesto1.png" alt="police aftesto" width="100"></div>
                            <div class="authenticsignature">
                                <img src="img\authentic signature.png" alt="police authentiqueSignature" width="100"></div>
                            <div class="cherolina">
                                <img src="img\Cherolina.png" alt="police Cherolina" width="100"></div>
                            <div class="christmascake">
                                <img src="img\Christmas Cake.png" alt="police Christmas" width="100"></div>
                            <div class="emillisaotf">
                                <img src="img\Emillisa Otf.png" alt="police Emillisa Otf" width="100"></div>
                            <div class="gistesy">
                                <img src="img\Gistesy1.png" alt="police Gistesy" width="100"></div>
                            <div class="greatvibes-regular">
                                <img src="img\GreatVibes.png" alt="police Great Vibes-Regular" width="100"></div>
                            <div class="highspirited">
                                <img src="img\High Spirited.png" alt="police High Spirited" width="100"></div>
                            <div class="islandiademo">
                                <img src="img\Islandia.png" alt="police IslandiaDEMO" width="100"></div>
                            <div class="lovelygarden">
                                <img src="img\lovely_garden.png" alt="police Lovely garden" width="150"></div>
                            <div class="masvis">
                                <img src="img\Masvis.png" alt="police Masvis" width="100"></div>
                            <div class="optimusprinceps">
                                <img src="img\Optimus Princeps.png" alt="police Optimus Princeps" width="150"></div>
                        </div>


            le css :

            .polices img{
              
                float:left;
                margin: 10px 10px;
                width: 6rem;
                height: 2rem; 
                
            
            }
            
            .polices img:hover{
                background-color: #f6e7e8;
                cursor: pointer;
            }


            Je ne sais pas si je me fais bien comprendre mais voilà !

            Merci encore pour ton aide 🙏

            PS :

            Encore désolée de te solliciter mais j'arrive bien à mettre mon image en fond mais pas à faire apparaître le texte par dessus 😢.

            Dans ton 1er code, j'avais tout qui apparaissait mais dans le dernier code, je n'ai ni mon image ni le texte.

            J'avoue que là, je suis perdue, pourtant j'ai bien suivi ton code. C'est à désespérer de ne pas savoir pourquoi cela ne fonctionne pas 🙄🤔.

            Si mon problème est trop bizarre, j'essayerai de me débrouiller autrement. En tout cas, merci encore 🤞👍

            -
            Edité par Saory972 20 janvier 2023 à 21:48:11

            • Partager sur Facebook
            • Partager sur Twitter
              21 janvier 2023 à 7:23:09

              Bonjour, si l'image est le texte n'apparait plus dans le canvas essai d'abord de debugger le code avant d'ajouter d'autre trucs.

              Est-ce que tu peux poster ton nouveau code Javascript et ta structure HTML.

              Est-ce que tu as pensée à appeler la fonction draw() à la fin du fichier ?

              Est-ce que tu as un message d'erreur dans la console Javascript ?

              Pour ouvrir la console Javascript dans le navigateur clique droit -> inspecter élément puis onglet console

              c'est ici qu'apparaîtront les éventuels message d'erreurs de Javascript, si tu en as il faut les préciser pour qu'on puisse t'aider.

              EDIT:

              A noter que les classes CSS sont toutes identiques la seule propriété qui change ces "background-color" pour ne pas répéter les autres propriétés tu peux faire une class couleur qui aurais toutes les propriété que les couleurs on en commun:

              .couleur {
              	content: "";
                  width: 2rem;
                  height: 2rem;
                  border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                  border: 1px solid #000000;
                  display: flex;
                  flex-wrap: wrap;
                  margin-left: 10px;
                  cursor: pointer;
              }
              
              .couleur1 {
                  background-color: #000000;
              }
               
              .couleur2 {
                  background-color: #ffffff;
              }
               
              .couleur3 {
                  background-color: #F2DEA0;
              }
               
              .couleur4 {
              	background-color: #8D8E93;
              
              }
               
              .couleur5 {
                  background-color:#fad2d3 ;   
              }

              Et dans le HTML ajouter la class couleur au div:

              <div class="couleur couleur1"></div>   
              <div class="couleur couleur2"></div>
              <div class="couleur couleur3"></div>
              <div class="couleur couleur4"></div>
              <div class="couleur couleur5"></div>



              -
              Edité par SamuelGaborieau3 21 janvier 2023 à 7:52:06

              • Partager sur Facebook
              • Partager sur Twitter

              suggestion de présentation.

                24 janvier 2023 à 9:42:33

                Bonjour SamuelGaborieau3

                Merci pour ton retour.

                J'ai décidé de procéder autrement en faisant en sorte que si je sélectionne une couleur, elle s'affiche dans mon canvas.

                Est-ce possible de procéder de la sorte et si oui, comment procéder ??

                Voici mon projet en HTML :

                <!DOCTYPE html>
                <html lang="en">
                <head>
                  <meta charset="UTF-8">
                  <meta http-equiv="X-UA-Compatible" content="IE=edge">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <title>Modal personnalisation</title>
                  <link rel="stylesheet" href="cid.css">
                </head>
                <body>
                
                <button><a href="#box">Personnalisez-le</a></button>
                
                <div id="box">
                    <div id="modale">
                        <a href="#">&times;</a>
                        
                        
                        <canvas id="canvas" width="400" height="300"></canvas>
                        
                        <div class="options">
                            <h3>Nos couleurs de fonds</h3>
                            <!--<span>Nos couleurs de fonds</span>-->
                    
                                <div class="conteneur-coloris-fonds">
                                    <div class="galerie-conteneur">
                                    <div class="images" >
                                        <a href="#teinte1">
                                        <img id="teinte1" src="teintes/Teintes compressées/3.png" alt="Vieux Rose"></a></div>
                                        <div class="nom"><p>Vieux Rose</p></div>
                                    </div>
                                
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte2">
                                        <img id="teinte" src="teintes/Teintes compressées/4.png" alt="Vieux Rose Brush"></a></div>                    
                                        <div class="nom"><p>Vieux Rose Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte3">
                                        <img src="teintes/Teintes compressées/5.png" alt="Noir"></a></div>                    
                                        <div class="nom"><p>Noir</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte4">
                                        <img src="teintes/Teintes compressées/6.png" alt="Noir Brush"></a></div>
                                        <div class="nom"><p>Noir Brush</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte5">
                                        <img src="teintes/Teintes compressées/7.png" alt="Blanc"></a></div>                    
                                        <div class="nom"><p>Blanc</p></div>
                                    </div>
                            
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte6">
                                        <img src="teintes/Teintes compressées/8.png" alt="Blanc Brush"></a></div>           
                                        <div class="nom"><p>Blanc Brush</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte7">
                                        <img src="teintes/Teintes compressées/9.png" alt="Gris Clair"></a></div>                    
                                        <div class="nom"><p>Gris Clair</p></div>
                                    </div>
                     
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte8">
                                        <img src="teintes/Teintes compressées/10.png" alt="Gris Clair Brush"></a></div>                    
                                        <div class="nom"><p>Gris Clair Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte9">
                                        <img src="teintes/Teintes compressées/11.png" alt="Gris Foncé"></a></div>                 
                                        <div class="nom"><p>Gris Foncé</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte10">
                                        <img src="teintes/Teintes compressées/12.png" alt="Gris Foncé Brush"></a></div>                   
                                        <div class="nom"><p>Gris Foncé Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte11">
                                        <img src="teintes/Teintes compressées/13.png" alt="Vert Forêt"></a></div>                    
                                        <div class="nom"><p>Vert Forêt</p></div>
                                    </div>
                     
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte12">
                                        <img src="teintes/Teintes compressées/14.png" alt="Vert Forêt Brush"></a></div>            
                                        <div class="nom"><p>Vert Forêt Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte13">
                                        <img src="teintes/Teintes compressées/15.png" alt="Vert Emeraude"></a></div>                    
                                        <div class="nom"><p>Vert Emeraude</p></div>
                                    </div>
                                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte14">
                                        <img src="teintes/Teintes compressées/16.png" alt="Vert Emeraude Brush"></a></div>                   
                                        <div class="nom"><p>Vert Emeraude Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte15">
                                        <img src="teintes/Teintes compressées/17.png" alt="Baby Blue"></a></div>                              
                                        <div class="nom"><p>Baby Blue</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte16">
                                        <img src="teintes/Teintes compressées/18.png" alt="Baby Blue Brush"></a></div>                             
                                        <div class="nom"><p>Baby Blue Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte17">
                                        <img src="teintes/Teintes compressées/19.png" alt="Lavande"></a></div>                          
                                        <div class="nom"><p>Lavande</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte18">
                                        <img src="teintes/Teintes compressées/20.png" alt="Lavande Brush"></a></div>                            
                                        <div class="nom"><p>Lavande Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte19">
                                        <img src="teintes/Teintes compressées/21.png" alt="Bordeaux"></a></div>                    
                                        <div class="nom"><p>Bordeaux</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte20">
                                        <img src="teintes/Teintes compressées/22.png" alt="Bordeaux Brush"></a></div>                    
                                        <div class="nom"><p>Bordeaux Brush</p></div>
                                    </div>
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte21">
                                        <img src="teintes/Teintes compressées/23.png" alt="Rouge"></a></div>                   
                                        <div class="nom"><p>Rouge</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte22">
                                        <img src="teintes/Teintes compressées/24.png" alt="Rouge Brush"></a></div>           
                                        <div class="nom"><p>Rouge Brush</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte23">
                                        <img src="teintes/Teintes compressées/25.png" alt="Beige"></a></div>                            
                                        <div class="nom"><p>Beige</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte24">
                                        <img src="teintes/Teintes compressées/26.png" alt="Beige Brush"></a></div>                    
                                        <div class="nom"><p>Beige Brush</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte25">
                                        <img src="teintes/Teintes compressées/27.png" alt="Bleu Nuit"></a></div>                    
                                        <div class="nom"><p>Bleu Nuit</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte26">
                                        <img src="teintes/Teintes compressées/28.png" alt="Bleu Nuit Brush"></a></div>                    
                                        <div class="nom"><p>Bleu Nuit Brush</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte27">
                                        <img src="teintes/Teintes compressées/29.png" alt="Taupe"></a></div>                    
                                        <div class="nom"><p>Taupe</p></div>
                                    </div> 
                      
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte28">
                                        <img src="teintes/Teintes compressées/30.png" alt="Taupe Brush"></a></div>                    
                                        <div class="nom"><p>Taupe Brush</p></div>
                                    </div> 
                    
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte29">
                                        <img src="teintes/Teintes compressées/31.png" alt="Ivoire"></a></div>                           
                                        <div class="nom"><p>Ivoire</p></div>
                                    </div> 
                                
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte30">
                                        <img src="teintes/Teintes compressées/32.png" alt="Ivoire Brush"></a></div>                    
                                        <div class="nom"><p>Ivoire Brush</p></div>
                                    </div> 
                          
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte31">
                                        <img src="teintes/Teintes compressées/33.png" alt="Marron"></a></div>                    
                                        <div class="nom"><p>Marron</p></div>
                                    </div> 
                                  
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte32">
                                        <img src="teintes/Teintes compressées/34.png" alt="Marron Brush"></a></div>         
                                        <div class="nom"><p>Marron Brush</p></div>
                                    </div> 
                             
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte33">
                                        <img src="teintes/Teintes compressées/35.png" alt="Rose Pâle"></a></div>                    
                                        <div class="nom"><p>Rose Pâle</p></div>
                                    </div> 
                                
                                    <div class="galerie-conteneur">
                                    <div class="images"> 
                                        <a href="#teinte34">
                                        <img src="teintes/Teintes compressées/36.png" alt="Rose Pâle Brush"></a></div>                              
                                        <div class="nom"><p>Rose Pâle Brush</p></div>
                                    </div> 
                                   
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte35">
                                        <img src="teintes/Teintes compressées/37.png" alt="Rose Violine Light"></a></div>                    
                                        <div class="nom"><p>Rose Violine Light</p></div>
                                    </div> 
                                     
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte36">
                                        <img src="teintes/Teintes compressées/38.png" alt="Rose Violine Light Brush"></a></div>                   
                                        <div class="nom"><p>Rose Violine Light Brush</p></div>
                                    </div> 
                                 
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte37">
                                        <img src="teintes/Teintes compressées/39.png" alt="Rose Poudré"></a></div>                     
                                        <div class="nom"><p>Rose Poudré</p></div>
                                    </div> 
                                   
                                    <div class="galerie-conteneur">
                                    <div class="images">
                                        <a href="#teinte38">
                                        <img src="teintes/Teintes compressées/40.png" alt="Rose Poudré Brush"></a></div>    
                                        <div class="nom"><p>Rose Poudré Brush</p></div>
                                   
                                    </div>   
                                </div>
                          
                            <!--SECTION PERSONNALISATION DU TEXTE-->
                        
                            <h3>Votre texte</h3>
                            <div class="entry-text">
                                <p>Choix du Premier texte</p>
                                    <label for="topinput"></label>
                                    <input type="text" name="Texte de la première ligne" id="firstinput"
                                    placeholder="Bienvenue au mariage de" size="60">
                            </div>  
                
                            <!--<h4>Couleurs du premier texte</h4>
                                <div class="couleursdetexte">
                                        <div class="couleur1"></div>    
                                        <div class="couleur2"></div> 
                                        <div class="couleur3"></div> 
                                        <div class="couleur4"></div> 
                                        <div class="couleur5"></div> 
                                </div>-->
                    
                                <div class="entry-text">
                                    <p>Choix du second texte</p>
                                    <label for="bodyinput"></label>
                                    <input type="text" name="Texte de la seconde ligne" id="secondinput"
                                    placeholder="Laura, Loris" size="60">
                                </div>
                    
                            <!--<h4>Couleurs du second texte</h4>
                                <div class="couleursdetexte">
                                        <div class="couleur1"></div>    
                                        <div class="couleur2"></div> 
                                        <div class="couleur3"></div> 
                                        <div class="couleur4"></div> 
                                        <div class="couleur5"></div> 
                                </div>-->
                    
                               <div class="entry-text">
                                    <p>Choix du troisième texte</p>
                                    <label for="bodyinput"></label>
                                    <input type="text" name="Texte de la seconde ligne" id="thirdinput"
                                    placeholder="et" size="60">
                                </div>
                    
                            <h4>Couleurs du texte</h4>
                                <div class="couleursdetexte">
                                    
                                        <div class="couleur1"></div>    
                                        <div class="couleur2"></div> 
                                        <div class="couleur3"></div> 
                                        <div class="couleur4"></div> 
                                        <div class="couleur5"></div> 
                                </div><br>
                    
                                <div class="entry-text">
                                    <p>Choix de la date</p>
                                    <label for="dateinput"></label>
                                    <input type="date" name="start" id="bigday"
                                    value="12.10.2022" min="01.01.2023" max="31.12.2023" size="100" cols="60" rows="20">
                                </div><br>
                    
                                <p>Dimension souhaitée</p><br>
                                    <label for="bodyinput"></label>
                                    <input class="text" name="textbigsmall" id="font-size" type="hidden" disabled><br>                   
                                    <div class="dimension">
                                        <div class="dimension1">A1</div>
                                        <div class="dimension2">A2</div>
                                        <div class="dimension3">A3</div>
                                        <div class="dimension4">A4</div>
                                        <div class="dimension5">A5</div><br>
                                    </div><br>
                    
                                        
                    <!--SECTION PERSONNALISATION POLICE-->
                         
                            <div class="polices"><br>
                                <div class="aautosignature">
                                    <img src="img\a_auto_signature.png" alt="police a_auto_signature" width="100"></div>
                                <div class="aftesto">
                                    <img src="img\aftesto1.png" alt="police aftesto" width="100"></div>
                                <div class="authenticsignature">
                                    <img src="img\authentic signature.png" alt="police authentiqueSignature" width="100"></div>
                                <div class="cherolina">
                                    <img src="img\Cherolina.png" alt="police Cherolina" width="100"></div>
                                <div class="christmascake">
                                    <img src="img\Christmas Cake.png" alt="police Christmas" width="100"></div>
                                <div class="emillisaotf">
                                    <img src="img\Emillisa Otf.png" alt="police Emillisa Otf" width="100"></div>
                                <div class="gistesy">
                                    <img src="img\Gistesy1.png" alt="police Gistesy" width="100"></div>
                                <div class="greatvibes-regular">
                                    <img src="img\GreatVibes.png" alt="police Great Vibes-Regular" width="100"></div>
                                <div class="highspirited">
                                    <img src="img\High Spirited.png" alt="police High Spirited" width="100"></div>
                                <div class="islandiademo">
                                    <img src="img\Islandia.png" alt="police IslandiaDEMO" width="100"></div>
                                <div class="lovelygarden">
                                    <img src="img\lovely_garden.png" alt="police Lovely garden" width="150"></div>
                                <div class="masvis">
                                    <img src="img\Masvis.png" alt="police Masvis" width="100"></div>
                                <div class="optimusprinceps">
                                    <img src="img\Optimus Princeps.png" alt="police Optimus Princeps" width="150"></div>
                            </div>
                       
                            <div>             
                                <textarea name="informations complementaires" id="info" cols="50" rows="10" placeholder="informations complémentaires"></textarea>
                            </div>
                
                            <p>Veuillez noter que les couleurs choisies peuvent apparaître différemment selon la résolution d'affichage de vos écrans.</p>
                
                            <div class="accept">
                                <label for="acceptation">En cochant cette case, vous acceptez les choix de votre conception</label>
                                <input type="checkbox" name="acceptation" id="acceptation">
                
                            </div>
                        </div>    
                    
                
                    
                        
                
                
                        <!--rajouter encart pour note supplémentaire ou description supplémentaire-->
                
                        <div class="tarifs">   
                            <span class="quantité">
                                <label for="qté">Qté</label>
                                <input type="number" id="Qté" name="Qté">
                            </span>
                            
                            <input type="submit" value="Ajouter au panier">
                        
                        </div> 
                    </div>
                      
                </div>
                   
                      <script src="CID.js"></script>
                     
                </body>
                </html>

                EN CSS :

                body{
                    margin: 0;
                    font-family: "Avenir Next", sans-serif;
                    display: flex;
                    justify-content: center;
                    align-items: center;
                    height: 100vh;
                }
                
                /* BOUTON POP UP */
                
                button{
                    padding: 7px 20px;
                    background: none;
                    outline: none;
                    border-radius: 5px;
                    background-color: #F4CDAE;
                }
                
                button a{
                    text-decoration: none;
                    font-size: 19px;
                    color: black;
                
                }
                
                button:hover{
                    background: #F4CDAE;
                }
                
                button:hover a{
                    color: white;
                }
                
                /* POP UP */
                
                #box {
                    position: fixed;
                    top: 0;
                    bottom: 0;
                    left: 0;
                    right: 0;
                    background-color: rgba(0, 0, 0, 0.5);
                    display: none;
                }
                
                #box:target{
                    display: block;
                }
                
                #modale{
                    background-color: #fff9fa;
                    position: relative;
                    top: 50%;
                    left: 50%;
                    transform: translate(-50%, -50%);
                    width: 1000px;
                    height: 600px;
                    max-width: 80%;
                    max-height: 80%;
                    border-radius: 6px;
                    padding: 5px;
                    display: flex;
                    flex-wrap: wrap;
                    justify-content: center;
                    align-items: center;
                    overflow: auto;
                    
                
                    
                }
                #modale a{
                    text-decoration: none;
                    font-size: 35px;
                    font-weight: 600;
                    color: #F4CDAE;
                    position: absolute;
                    top: 10px;
                    right: 15px;
                   
                }
                
                #canvas{
                    
                    display: flex;
                    flex-wrap: wrap;
                    max-width: 80%;
                    margin: 20px;
                    border: 1px solid lightgrey;
                    margin-top: 60px;
                    background-color: #fdeaea;
                    
                }
                
                .options{
                    
                  
                    width: 500px;
                    max-width: 80%;
                    height: 400px;
                    max-height: 80%;
                    border: 2px solid #d2d4dc;
                    padding: 5px;
                    overflow-x: hidden;
                    overflow-y: scroll;
                    flex-shrink: 0;
                    margin-top: 40px;
                    
                    
                        
                }
                
                /* SECTION PERSONNALISATION COULEUR DE FONDS*/
                
                
                .conteneur-coloris-fonds{
                    display: flex;
                    flex-wrap: wrap;
                    width: 100%;
                    text-align: center;
                    font-weight: bold;
                    justify-content: center;
                    
                
                }    
                
                .galerie-conteneur{
                    position:relative;
                    justify-content:center;
                    align-items: center;
                    display: flex;
                    
                }
                
                .galerie-conteneur .images img{
                    width: 4rem;
                    height: 3rem; 
                    border: 1px solid lightgrey;
                    box-shadow: 2px 2px 2px lightgrey;
                    
                   
                }   
                
                /*TEXTE EN SURVOL*/
                
                
                
                .galerie-conteneur p{
                    
                    border-radius: 10px;
                    background-color: #f5d7bd;
                    color: rgb(0, 0, 0);
                    font-size: 13px;
                    position: relative;
                    width: 5rem;
                    height: 3rem;
                    padding-top: 5px;
                    transform: scale(0); 
                    justify-content: center;
                    text-align: center;
                    
                    
                }
                
                /*SECTION PERSONNALISATION COULEUR DE TEXTE*/
                
                
                #firstinput{
                    display: flex;
                    color:rgb(77, 77, 77);
                    flex-wrap: wrap;
                    font-size: small;
                
                }
                
                
                #secondinput{ 
                    display: flex;
                    color:rgb(77, 77, 77);
                    flex-wrap: wrap;
                    font-size: small;
                }
                
                #thirdinput{ 
                    display: flex;
                    color:rgb(77, 77, 77);
                    flex-wrap: wrap;
                    font-size: small;
                }
                
                .couleursdetexte1{
                    margin-top: 5px;
                    margin-bottom: 15px;
                    display: flex;
                    color: #8D8E93;
                
                }    
                
                
                .couleursdetexte2{
                    margin-top: 5px;
                    margin-bottom: 15px;
                    display: flex;
                    color: #8D8E93;
                    
                }
                
                .couleursdetexte3{
                    margin-top: 5px;
                    margin-bottom: 15px;
                    display: flex;
                    color: #8D8E93;
                    
                }
                
                
                .couleur1{
                    content: "";
                    width: 2rem;
                    height: 2rem;
                    border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                    border: 1px solid ;
                    background-color: #000000;
                    display: flex;
                    flex-wrap: wrap;
                    margin-left: 10px;
                    cursor: pointer;
                    float: left;
                   
                   
                }
                
                .couleur2{
                    content: "";
                    width: 2rem;
                    height: 2rem;
                    border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                    border: 1px solid #000000;
                    background-color: #ffffff;
                    display: flex;
                    flex-wrap: wrap;
                    margin-left: 10px;
                    cursor: pointer;
                    float: left;
                }
                
                .couleur3{
                    content: "";
                    width: 2rem;
                    height: 2rem;
                    border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                    border: 1px solid #000000;
                    background-color: #8D8E93;
                    display: flex;
                    flex-wrap: wrap;
                    margin-left: 10px;
                    cursor: pointer;
                    float: left;
                }
                
                .couleur4{
                    content: "";
                    width: 2rem;
                    height: 2rem;
                    border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                    border: 1px solid #000000;
                    background-color: #F2DEA0;
                    display: flex;
                    flex-wrap: wrap;
                    margin-left: 10px;
                    cursor: pointer;
                    float: left;
                }
                
                .couleur5{
                    content: "";
                    width: 2rem;
                    height: 2rem;
                    border-radius:50% 50% 50% 50% / 50% 50% 50% 50% ;
                    border: 1px solid #000000;
                    background-color:#fad2d3 ;
                    display: flex;
                    flex-wrap: wrap;
                    cursor: pointer;
                    margin-left: 10px;
                    float: left;
                    
                    
                
                }
                
                h2{
                    display: flex;
                    font-weight: 400;
                    color: #8D8E93;
                    text-decoration: underline;
                }
                
                
                
                h3{
                    
                    display: flex;
                    flex-wrap: wrap;
                    font-weight: 300;
                    color: #8D8E93;
                    
                }
                
                
                h4{
                    display: flex;
                    flex-wrap: wrap;
                    font-weight: 300;
                    color: #8D8E93;
                }
                
                
                
                #info{
                    display: flex;
                    flex-wrap: wrap;
                    float: left;
                    margin-top: 1,25rem;
                    margin-left: 5px;
                
                }
                
                .dimension1{
                    border: 1px solid #ddd;
                    border-radius: 2px;
                    padding: 10px 10px;
                    cursor: pointer;
                    float: left;
                    margin: 7px;
                    color: #8D8E93;
                }      
                
                .dimension2{
                    border: 1px solid #ddd;
                    border-radius: 2px;
                    padding: 10px 10px;
                    cursor: pointer;
                    float: left;
                    margin: 7px;
                    color: #8D8E93;
                }      
                
                .dimension3{
                    border: 1px solid #ddd;
                    border-radius: 2px;
                    padding: 10px 10px;
                    cursor: pointer;
                    float: left;
                    margin: 7px;
                    color: #8D8E93;
                }      
                
                .dimension4{
                    border: 1px solid #ddd;
                    border-radius: 2px;
                    padding: 10px 10px;
                    cursor: pointer;
                    float: left;
                    margin: 7px;
                    color: #8D8E93;
                }      
                
                .dimension5{
                    border: 1px solid #ddd;
                    border-radius: 2px;
                    padding: 10px 10px;
                    cursor: pointer;
                    float: left;
                    margin: 7px;
                    color: #8D8E93;
                }      
                
                .dimension1:hover{
                    background-color: #f6e7e8;
                }
                
                .dimension2:hover{
                    background-color: #f6e7e8;
                }
                
                .dimension3:hover{
                    background-color: #f6e7e8;
                }
                
                .dimension4:hover{
                    background-color: #f6e7e8;
                }
                
                .dimension5:hover{
                    background-color: #f6e7e8;
                }
                
                /*SECTION PERSONNALISATION POLICE DE TEXTE*/
                
                .entry-text{
                    margin: 10px;
                }
                
                
                
                
                .polices img{
                  
                    float:left;
                    margin: 10px 10px;
                    width: 6rem;
                    height: 2rem;
                        
                
                }
                
                .polices img:hover{
                    background-color: #f6e7e8;
                    cursor: pointer;
                }
                
                textarea{
                    display: flex;
                    margin: 10px;
                }
                
                
                input[type="number"]{
                    
                    color: #000000;
                    width: 50px;
                    height: 30px;
                    
                }
                
                input[type="submit"]{
                    
                    background-color:#F4CDAE ;
                    color: #000000;
                    border: 1px solid #F4CDAE ;
                    cursor: pointer;
                    width: 130px;
                    height: 30px;
                    font-size:1rem;
                }
                
                input[type="submit"]:hover{
                    color: #ffffff;
                   
                }
                
                p{
                    display: flex;
                    flex-wrap: wrap;
                    float: left;
                    font-weight: 600;
                    font-size: 0.9rem;
                    color: #7e7f83;
                }
                
                .accept{
                    display: flex;
                    flex-wrap: wrap;
                    float: left;
                    font-size: 0.9rem;
                    color: #7e7f83;
                }
                
                EN JS :
                const canvas = document.querySelector('canvas')
                const ctx = canvas.getContext('2d')
                const image = document.getElementById('teinte1')
                
                
                
                canvas.width = 400
                canvas.height = 400
                
                
                // DESSINE L'IMAGE DE FOND:
                
                //function setupCanvas(){
                
                    //const img = new Image();
                    //img.src = 'teintes/Teintes compressées/3.png';
                    //img.addEventListener("load", function(){
                        //ctx.drawImage(img,0, 0, 400, 300, 100, 80, 200, 200,);
                       
                    //})
                //}
                //setupCanvas()
                
                // DESSINE UN RECTANGLE
                
                
                ctx.fillStyle='#FAD2D3';
                ctx.lineWidth=(1);
                ctx.fillRect(100, 130, 200, 230);
                
                // DESSINE UN ARC
                
                ctx.beginPath();
                ctx.arc(200,130,100,0,Math.PI,true);
                ctx.fillStyle=('#FAD2D3')
                ctx.stroke=('#FAD2D3');
                ctx.fill();
                ctx.closePath();
                
                
                 // DESSINE LE TEXTE PAR DESSUS L'IMAGE DE FOND:
                 ctx.font='25pt Masvis, serif';
                 ctx.textBaseline="bottom";
                 ctx.fillStyle='black';
                 ctx.fillText('LAURA', 110, 180);
                 ctx.fillText('LORIS', 110, 270);
                
                 ctx.font='25pt a auto signature, serif';
                 ctx.fillText('and', 120, 220);
                
                 ctx.font='12pt Verdana, Arial, serif';
                 ctx.fillText('12.10.2022', 110, 340);
                
                  // dessine le canvas
                 draw()

                Merci encore pour l'aide apportée 👍👍🙏




                • Partager sur Facebook
                • Partager sur Twitter

                Insérer des images dans CANVAS

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown