Dans ce chapitre je montre comment insérer et styler du texte dans un canevas.
Le canevas fait 300 par 300 ; l'attribut ID n'est pas utilisé.
La fonction JS :
Comme l'attribut ID n'a pas été utilisé, je suis obligé de repérer le premier canvas par son rang.
La méthode querySelector('canvas') sélectionne la premier CANVAS d'une page.
Chaque mot se répartit horizontalement et verticalement autour de son point de référence car textAlign= 'center'
et textBaseline= 'middle'
Le texte est stylé grâce au raccourci font qui fonctionne exactement comme ce raccourci du même nom en CSS.
Les valeurs de shadowOffsetX & shadowOffsetY peuvent être négatives.
Les quatres propriétés shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur permettent non seulement d'ombrer le texte
mais aussi les formes comme je le montre dans le canevas ci-dessous.
Les six formes géométriques sont ombrées.
Le canevas fait 400 par 400 et l'attribut ID n'est pas utilisé.
Le script :
Comme l'attribut ID n'a pas été utilisé je suis obligé de sélectionner le deuxième canvas par son rang.
Le deuxième élément CANVAS a le rang 1 dans la collection des CANVAS.
Les quatre propriétés shadowColor, shadowOffsetX, shadowOffsetY, shadowBlur - applicables au contexe - permettent
non seulement d'ombrer du texte mais aussi les formes.
Remarquez que les trois formes géométriques sont définies grâce au constructeur Path2D() et que la dernier chemin est défini
avec la syntaxe SVG (notation en relatif).
Il y a tout un chapitre sur le constructeur Path2D() et sur la notation au format SVG des chemins.
J'utilise aussi une transformation et plus précisèment une translation. Les transformations sont aussi évoqués dans ce tuto.
Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Canvas : produire du texte - ombrer les formes
Je vous montre également comment ombrer textes et formes.
Insérer du texte dans un canevas
Exemple
Le code correspondant
function fcanevas1()
{
var canevas = document.querySelector('canvas');
var contexte = canevas.getContext('2d');
var X = canevas.width ;
var Y = canevas.height;
contexte.textAlign ='center';
contexte.textBaseline = 'middle';
contexte.font = " bold italic 80px arial" ;
contexte.fillStyle = 'gold';
contexte.strokeStyle ='gold';
contexte.lineWidth = 5;
contexte.shadowColor = 'grey'; // couleur ombrage
contexte.shadowOffsetX = 10 ;
contexte.shadowOffsetY = 10 ;
contexte.shadowBlur = 10 ;
contexte.fillText('Hello', X/2, Y/3) ;
contexte.strokeText('world',X/2, Y/3*2);
}
fcanevas1();
Les valeurs possibles de la propriété textAlign sont : left / center /right.
Les valeurs possible de la propriété textBaseline sont : top / middle / bottom.
Ce raccourci remplace les propriétés élémentaires suivantes : font-style, font-variant,font-weight, font-size,
font-family.
Exemple : font : italic small-caps bold 24pt Arial ;
Remarque : il faut respecter l'ordre mais il n'est pas obligatoire qu'il y ait toujours 5 valeurs.Propriétés pour l'ombrage du texte :
Les méthodes fillText(texte, x,y) et strokeText(texte,x,y) permettent d'écrire le texte :
Canvas : ombrage de formes
Le canevas
Je définis un modèle de rectangle et le duplique deux fois. Même remarque pour le cercle et le triangle.
Le code correspondant
function fcanevas2()
{
var canevas = document.querySelectorAll('canvas')[1];
var contexte = canevas.getContext('2d');
contexte.shadowColor = 'grey';
contexte.shadowOffsetX = 10 ;
contexte.shadowOffsetY = 10 ;
contexte.shadowBlur = 10 ;
// créer un premier objet graphique : un rectangle
var rectangle1 = new Path2D();
rectangle1.rect(110, 110, 50, 50);
// créer un deuxième objet graphique : un cercle
var cercle1 = new Path2D();
cercle1.arc(100,35, 25, 0, 2 * Math.PI);
// créer une troisième forme
var triangle1 = new Path2D('M200 10 h150 v100 z');
// dessiner ces objets
contexte.fill(rectangle1);
contexte.fill(cercle1);
contexte.fill(triangle1);
// redessiner les trois formes après une translation verticale
contexte.translate(0,150);
contexte.fillStyle ="red";
contexte.fill(rectangle1);
contexte.fill(cercle1);
contexte.fill(triangle1);
}
fcanevas2();
Le contructeur Path2D() et la notation SVG des chemins