Texte et images sur `canvas`
Rendez des chaînes de texte et dessinez des images sur le canevas.
Texte et images sur `canvas` est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Tracer du texte
Définissez la police : ctx.font = "bold 24px sans-serif". Dessinez avec ctx.fillText("Hello", x, y) ou ctx.strokeText("Hello", x, y). La coordonnée y correspond à la ligne de base du texte ; ajoutez la hauteur des ascendantes au-dessus pour positionner correctement le texte dans une boîte englobante.
Alignement du texte
ctx.textAlign contrôle l’alignement horizontal : "left" (par défaut), "center", "right". ctx.textBaseline contrôle l’alignement vertical par rapport à y : "top", "middle", "alphabetic" (par défaut), "bottom". Pour centrer le texte, définissez les deux propriétés sur "center" et "middle".
measureText pour la mise en page
ctx.measureText("text") renvoie un objet TextMetrics contenant la largeur et les métriques de police. Utilisez-le pour calculer dynamiquement les positions du texte : centrer le texte dans une boîte, le répartir sur plusieurs lignes à la largeur maximale maxWidth ou aligner des étiquettes à droite à côté de points de données.
Retour à la ligne du texte
Le canevas ne prend pas en charge automatiquement le retour à la ligne du texte. Implémentez-le ainsi : mesurez la largeur des mots, accumulez-les jusqu’à dépasser maxWidth, puis passez à une nouvelle ligne selon des intervalles de lineHeight. Il s’agit d’une fonction utilitaire courante dans les bibliothèques de rendu sur canevas.
Dessiner des images
ctx.drawImage(image, dx, dy) dessine une image HTML, un canevas HTML ou une vidéo HTML à la position (dx, dy). Chargez d’abord l’image et dessinez-la dans son gestionnaire de chargement pour vous assurer que les pixels sont disponibles avant le dessin.
const img = new Image();
img.onload = () => ctx.drawImage(img, 0, 0);
img.src = "photo.jpg";Mettre les images à l’échelle
ctx.drawImage(image, dx, dy, dw, dh) adapte l’image aux dimensions dw × dh. La conservation des proportions n’est pas automatique : calculez les dimensions manuellement. Pour conserver les proportions : dw = img.width * scale; dh = img.height * scale.
Rogner des images
La version de drawImage à neuf arguments est la suivante : ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh). Le rectangle source (sx, sy, sw, sh) délimite la zone à rogner dans l’image ; le rectangle de destination (dx, dy, dw, dh) positionne et met à l’échelle cette zone sur le canevas.
Lissage des images
ctx.imageSmoothingEnabled = false désactive l’interpolation bilinéaire lors de la mise à l’échelle des images. Utilisez cette option pour le pixel art lorsque vous souhaitez une mise à l’échelle nette, sans lissage. Laissez-la activée (valeur par défaut) pour les photographies, dont la mise à l’échelle lisse est plus esthétique.
Le canevas comme source d’image
Passez un canevas comme source à drawImage pour effectuer le rendu d’un canevas sur un autre. Cela permet le rendu hors écran : dessinez des compositions complexes sur un canevas masqué, puis dessinez ce canevas sur le canevas visible en une seule opération à chaque image.
globalAlpha et composition
ctx.globalAlpha (de 0 à 1) applique une transparence uniforme à tous les dessins suivants. ctx.globalCompositeOperation contrôle la manière dont les nouveaux dessins se combinent avec les pixels existants : "source-over" (par défaut), "multiply", "screen", "destination-out" (effacement), et bien d’autres.
toDataURL pour l’exportation
canvas.toDataURL("image/png") exporte le canevas sous forme d’URL de données PNG encodée en base64. Utilisez-la pour un téléchargement déclenché par l’utilisateur : créez une ancre, définissez son attribut de destination sur l’URL de données et son attribut de téléchargement sur un nom de fichier, puis déclenchez un clic par programmation.
Vérification des connaissances
Sur quoi influe ctx.textBaseline = "middle" lors du dessin du texte ?
Résumé
Le rendu du texte sur canevas utilise ctx.font, fillText/strokeText, textAlign et textBaseline pour le positionnement, ainsi que measureText pour les calculs de mise en page. Le dessin d’images avec drawImage prend en charge la mise à l’échelle et le rognage ; globalAlpha et globalCompositeOperation contrôlent la composition. toDataURL exporte le canevas pour le téléchargement ou une utilisation ultérieure.
Questions Fréquemment Posées
La leçon « Texte et images sur `canvas` » est-elle gratuite ?
Oui — le texte complet de « Texte et images sur `canvas` » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Texte et images sur `canvas` » ?
Rendez des chaînes de texte et dessinez des images sur le canevas. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Texte et images sur `canvas` » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Configurer `canvas` et le contexte 2D
- Dessiner des rectangles et des tracés
- Texte et images sur `canvas`
- Animation avec `requestAnimationFrame`