[JCanvas] Modifier un texte déjà tracé sur un Canvas
En Canvas avec JCanvas, on peut écrire du texte et c’est vraiment pratique.
Pour changer la couleur du texte, on a aucun problème, mais comment changer le texte une fois écrit ?
Avant je l’effaçais en traçant un rectangle a la bonne taille dessus, mais cette technique fonctionne seulement si on connait la taille du texte autrement ça peut être compliqué. J’aime pas cette façon de faire.
Voila comment on trace du texte(Pour plus d’info il y a la doc):
canvas.drawText({ layer: true, name: 'texte', fillStyle: '#36c', fontStyle: 'bold', fontSize: '20pt', fontFamily: 'Trebuchet MS, sans-serif', text: 'The quick brown fox jumps over the lazy dog.', x: 180, y: 100, align: 'left', maxWidth: 300 });
Il serait donc plus simple de modifier le texte déjà tracé. Une des méthodes que je connais était d’utiliser animateLayer():
canvas.animateLayer('texte', { text: 'Test', });
Mais une fois utilisé pour modifier le texte on peut voir que cela ne fonctionne pas du tout, car ça va nous afficher le texte tracé, donc sans le changer tout en nous rajoutant au début NaN:
NaNThe quick brown fox jumps over the lazy dog.
C’est ainsi que j’ai eu l’idée de faire de cette façon:
canvas.getLayer('texte').text = 'On change le texte\nEt cela fonctionne!!!';
C’est sans doute la bonne façon de faire, mais je n’ai rien trouvé dans la doc.
Comme on peut le voir, ce n’est pas parfait!!! D’après mes tests, le texte va se mettre à jour une fois que la souris sort du canvas et c’est nul!!!!
La solution c’est de rajouter:
canvas.drawLayers();
Voila c’est parfait!!!
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.