Maison interface Web Tutoriel H5 Programmation des compétences du didacticiel _html5 de l'API HTML5 Canvas

Programmation des compétences du didacticiel _html5 de l'API HTML5 Canvas

May 16, 2016 pm 03:49 PM
api canvas html5


Copier le code
Le code est le suivant :



Rejoignez Canvas


Copier le code
Le code est le suivant :

//Obtenir l'élément Canvas et son contexte de dessin var canvas = document.getElementById("diagonal");
var context = canvas.getContext("2d");
//Utiliser des coordonnées absolues pour créer un chemin
context.beginPath( );
context.moveTo(70, 140);
context.lineTo(140, 70);
//Dessinez cette ligne sur Canvas
context.stroke();

Transformer

Le même effet que ci-dessus peut être obtenu grâce à une transformation (zoom, translation, rotation), etc.

Dessinez des lignes diagonales en utilisant la transformation


Copier le code
Le code est le suivant :

//Obtenir l'élément Canvas et son contexte de dessin
var canvas = document.getElementById("diagonal");
var context = canvas.getContext("2d");
//Enregistrer l'état actuel du dessin
context.save ();
//Déplacez le contexte de dessin en bas à droite
context.translate(70, 140);
//En utilisant l'origine comme point de départ, tracez le même segment de ligne qu'avant
context.beginPath();
context .moveTo(0, 0);
context.lineTo(70, -70);
context.stroke();

context.restore();

Chemin

Les chemins de l'API HTML5 Canvas représentent n'importe quelle forme que vous souhaitez restituer.

beginPath() : quel que soit le type de graphique que vous commencez à dessiner, la première chose à appeler estbeginPath. Cette fonction simple ne prend aucun paramètre et est utilisée pour informer le canevas qu'il est sur le point de commencer à dessiner un nouveau graphique.

moveTo(x,y) : déplace la position actuelle vers les nouvelles coordonnées cibles (x,y) sans dessiner.

lineTo(x,y) : non seulement déplace la position actuelle vers les nouvelles coordonnées cibles (x,y), mais trace également une ligne droite entre les deux coordonnées.

closePath() : Cette fonction se comporte beaucoup comme lineTo. La seule différence est que closePath utilisera automatiquement les coordonnées de départ du chemin comme coordonnées cibles. Il informe également le canevas que la forme actuellement dessinée est fermée ou forme une zone complètement fermée, ce qui est très utile pour les futurs remplissages et traits.

Dessinez une canopée de pins


Copier le code
Le code est le suivant :

function createCanopyPath(context) {
// Dessinez la canopée des arbres
context.beginPath();

context.moveTo(-25, -50);
context.lineTo(-10, -80);
context.lineTo(-20, -80);
context.lineTo( -5, -110);
context.lineTo(-15, -110);

//Les sommets de l'arbre
context.lineTo(0, -140);

context.lineTo(15, -110);
context.lineTo(5, -110);
context.lineTo(20, -80);
context.lineTo(10, - 80);
context.lineTo(25, -50);
// Relier le point de départ, chemin fermé
context.closePath();
}

function drawTrails() {
var canvas = document.getElementById('diagonal');
var context = canvas.getContext('2d');

context.save();
context.translate(130, 250);

//Créer un chemin représentant la canopée
createCanopyPath(context);

// Dessiner le chemin actuel
context.stroke();
context.restore();
}

window.addEventListener("load", drawTrails, true

Style de trait

Utilisez le mode Trait pour rendre la couronne de l'arbre plus réaliste.


Copier le codeLe code est le suivant :
//Élargir la ligne
context .lineWidth = 4;
//Le point commun du chemin lisse
context.lineJoin = 'round';
//Color
context.strokeStyle = '#663300';
//Dessin du chemin actuel
context.Stroke();

Style de remplissage

context.fillStyle = "#339900"; contexte.fill();

Dessinez un rectangle

On ajoute un tronc à l'arbre

context.fillStyle = '#663300'; context.fillRect(-5, -50, 10, 50);

Dessiner une courbe


Copier le code
Le code est le suivant :

context.save();
context.translate(-10, 350);
context.beginPath();

// La première courbe s'incurve vers le haut vers la droite
context.moveTo(0, 0);
context.quadraticCurveTo(170, -50, 260, -190);

//Courbe en bas à droite
context.quadraticCurveTo(310, -250, 410, -250);

// Tracez le chemin avec un large trait marron
context.StrokeStyle = '#663300';
context.lineWidth = 20;
context.Stroke();

// Restaurer l'état précédent du canevas
context.restore();

Insérer des images dans Canvas

Vous devez attendre que l'image soit complètement chargée avant de pouvoir opérer dessus. Les navigateurs chargent généralement les images de manière asynchrone lorsque le script de page est exécuté. Si vous essayez de restituer l'image sur le canevas avant qu'elle ne soit complètement chargée, le canevas n'affichera aucune image. Par conséquent, une attention particulière doit être accordée à ce que l'image soit chargée. .


Copier le code
Le code est le suivant :

// Charger l'image
var bark = new Image();
bark.src = "bark.jpg";

// Une fois l'image chargée, appelez la fonction de dessin
bark.onload = function () {
drawTrails();
}

Afficher l'image :

//Remplir avec un motif d'arrière-plan comme arrière-plan du tronc d'arbre context.drawImage(bark, -5, -50, 10, 50);

Dégradé

L'utilisation des dégradés nécessite trois étapes :

(1) Créer un objet dégradé

(2) Définissez la couleur de l'objet dégradé et spécifiez la méthode de transition

(3) Définir le dégradé pour le style de remplissage ou le style de trait en fonction du contexte


Copiez le code
Le code est le suivant :

// Créez un trois texture de tronc d'arbre dimensionnel Ordre du dégradé horizontal
var trunkGradient = context.createLinearGradient(-5, -50, 5, -50);

//Le bord gauche du tronc est généralement marron
trunkGradient.addColorStop(0, '#663300');

// La couleur de la partie centrale gauche du tronc doit être discutée
trunkGradient.addColorStop(0.4, '#996600');

//La couleur sur le bord droit doit être plus foncée
trunkGradient.addColorStop(1, '#552200');

// Remplir le tronc avec un dégradé
context.fillStyle = trunkGradient;
context.fillRect(-5, -50, 10, 50);
// Créer un dégradé vertical pour remplir le tronc avec la canopée Ombre sur le tronc de l'arbre
var canopyShadow = context.createLinearGradient(0, -50, 0, 0);
// Le point de départ du dégradé de projection est noir avec une transparence de 50%
canopyShadow.addColorStop(0, ' rgba(0, 0, 0, 0.5)');
// La direction est verticalement vers le bas et devient rapidement complètement transparente sur une courte distance.
// au-delà de cette longueur. Projection
canopyShadow.addColorStop(0.2, 'rgba(0, 0, 0, 0.0)');

// Remplissez le tronc d'arbre avec le dégradé de projection
context.fillStyle = canopyShadow;
context.fillRect(-5, -50, 10, 50);

Image de fond


Copier le code
Le code est le suivant :
// Charger l'image
var gravel = new Image();
gravel.src = "gravel.jpg";
gravel.onload = function () {
drawTrails();
}

//Remplacez la ligne marron épaisse par une image d'arrière-plan
context.StrokeStyle = context.createPattern(gravel, 'repeat');
context.lineWidth = 20;
context.Stroke() ;



Le deuxième paramètre de context.createPattern est un marqueur de répétabilité, et vous pouvez choisir la valeur appropriée dans le tableau 2-1.

Zoomer

Fonction de mise à l'échelle context.scale(x,y) : x et y représentent respectivement les valeurs dans les dimensions x et y. Lorsque chaque paramètre affiche une image sur le canevas, il est transmis la quantité par laquelle l'image doit être agrandie (ou réduite) sur l'axe de la direction. Si la valeur x est 2, cela signifie que tous les éléments de l'image dessinée deviendront deux fois plus larges. Si la valeur y est 0,5, l'image dessinée deviendra deux fois moins haute qu'auparavant.


Copier le code
Le code est le suivant :

// À X=130 , Y= Dessinez le premier arbre à 250
context.save();
context.translate(130, 250);
drawTree(context);
context.restore();

// Dessinez le deuxième arbre à X=260, Y=500
context.save();
context.translate(260, 500);

//Agrandissez la hauteur et la largeur du deuxième arbre à 2 fois la valeur d'origine
context.scale(2, 2);
drawTree(context);
context.restore();

Rotation

Faire pivoter l'image


Copier le code
Le code est le suivant :

context.save();
//Le paramètre d'angle de rotation est en radians
context.rotate(1.57);
context.drawImage(myImage, 0, 0, 100, 100);

context.restore();

Une façon d'utiliser la transformation


Copier le code
Le code est le suivant :

// Enregistrer l'état actuel
contexte .save();

// La valeur X augmente à mesure que la valeur Y augmente. À l'aide de la transformation d'étirement,
// vous pouvez créer un arbre incliné utilisé comme ombre
// Après avoir appliqué la transformation, tout les coordonnées sont Multiplier par matrice
context.transform(1, 0,
-0.5, 1,
, 0);

// Dans la direction de l'axe Y, modifiez la hauteur de l'ombre à 60 % de la valeur d'origine
context.scale(1, 0.6);

// Remplir le tronc de noir avec une transparence de 20%
context.fillStyle = 'rgba(0, 0, 0, 0.2)';
context.fillRect(-5, -50, 10, 50);≪/p>

//Redessinez l'arbre en utilisant l'effet d'ombre existant
createCanopyPath(context);
context.fill();

//Restaurer l'état précédent du canevas
context.restore();

Texte

context.fillText(text,x,y,maxwidth) : contenu du texte, x,y spécifie la position du texte, maxwidth est un paramètre facultatif, limitant la position du texte.
context.StrokeText(text,x,y,maxwidth) : contenu du texte, x,y spécifie la position du texte, maxwidth est un paramètre facultatif, limitant la position du texte.


Copier le code
Le code est le suivant :

// Dessiner du texte sur toile
context.save();

//La taille de la police est de 60 et la police est Impact
context.font = "60px impact";

//Couleur de remplissage
context.fillStyle = '#996600';
//Center
context.textAlign = 'center';

//Dessiner du texte
context.fillText('Happy Trails!', 200, 60, 400);
context.restore();

Ombre

Les ombres peuvent être contrôlées via plusieurs propriétés de contexte globales

属性  值  备注
shadowColor  任何CSS中的颜色值 可以使用透明度(alpha)
shadowOffsetX 像素值  值为正数,向右移动阴影;为负数,向左移动阴影
shadowOffsetY 像素值 值为正数,向下移动阴影;为负数,向上移动阴影
shadowBlur 高斯模糊值 值越大,阴影边缘越模糊


Copier le code
Le code est le suivant :

// Couleur noir, 20 % transparence
context.shadowColor = 'rgba(0, 0, 0, 0.2)';

// Déplacer 15px vers la droite et 10px vers la gauche
context.shadowOffsetX = 15;
context.shadowOffsetY = -10;

// Ombre légèrement floue
context.shadowBlur = 2;

Données pixels

context.getImageData(sx, sy, sw, sh) : sx, xy déterminent un point, sw : largeur, sh : hauteur.

Cette fonction renvoie trois attributs : largeur combien de pixels dans chaque ligne hauteur combien de pixels dans chaque colonne

Groupe de données de valeurs RGBA (valeur rouge, vert, bleu et transparence) avec chaque pixel obtenu à partir de Canvas.

context.putImageData(imagedata,dx,dy) : permet aux développeurs de transmettre un ensemble de données d'image. dx et dy sont utilisés pour spécifier le décalage. Si elle est utilisée, la fonction passera à la position spécifiée du canevas. 🎜>

Affichez les données de pixels entrantes.

canvas.toDataUrl : les données actuellement présentées sur le canevas peuvent être obtenues par programme. Les données obtenues sont enregistrées au format texte et le navigateur peut les analyser en une image.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD
Musée à deux points: toutes les expositions et où les trouver
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Bordure de tableau en HTML Bordure de tableau en HTML Sep 04, 2024 pm 04:49 PM

Guide de la bordure de tableau en HTML. Nous discutons ici de plusieurs façons de définir une bordure de tableau avec des exemples de bordure de tableau en HTML.

Tableau imbriqué en HTML Tableau imbriqué en HTML Sep 04, 2024 pm 04:49 PM

Ceci est un guide des tableaux imbriqués en HTML. Nous discutons ici de la façon de créer un tableau dans le tableau ainsi que des exemples respectifs.

Marge gauche HTML Marge gauche HTML Sep 04, 2024 pm 04:48 PM

Guide de la marge HTML gauche. Nous discutons ici d'un bref aperçu de la marge gauche HTML et de ses exemples ainsi que de son implémentation de code.

Disposition du tableau HTML Disposition du tableau HTML Sep 04, 2024 pm 04:54 PM

Guide de mise en page des tableaux HTML. Nous discutons ici des valeurs de la mise en page des tableaux HTML ainsi que des exemples et des résultats en détail.

Liste ordonnée HTML Liste ordonnée HTML Sep 04, 2024 pm 04:43 PM

Guide de la liste ordonnée HTML. Ici, nous discutons également de l'introduction de la liste et des types HTML ordonnés ainsi que de leur exemple respectivement.

Déplacer du texte en HTML Déplacer du texte en HTML Sep 04, 2024 pm 04:45 PM

Guide pour déplacer du texte en HTML. Nous discutons ici d'une introduction, du fonctionnement des balises de sélection avec la syntaxe et des exemples à implémenter.

Espace réservé d'entrée HTML Espace réservé d'entrée HTML Sep 04, 2024 pm 04:54 PM

Guide de l'espace réservé de saisie HTML. Nous discutons ici des exemples d'espace réservé d'entrée HTML ainsi que des codes et des sorties.

Bouton HTML onclick Bouton HTML onclick Sep 04, 2024 pm 04:49 PM

Guide du bouton HTML onclick. Nous discutons ici de leur introduction, de leur fonctionnement, des exemples et de l'événement onclick dans divers événements respectivement.

See all articles