2017-08-22 4 views
0

j'ai une données PNG existant URI comme:Comment définir un style de remplissage (texture) à une URI de données existantes dans la toile

let dataURI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAD+qAB849H0AAAAAXRSTlMAQObYZgAAAAxJREFUCNdjSEsgiACnWAlJEDYe/gAAAABJRU5ErkJggg=="; 

Je veux l'utiliser comme une texture dans ma toile que je fais certains tirent des opérations sur. J'ai essayé quelques choses avec canvas.fillStyle, mais je ne vois pas cela fonctionner. Les couleurs fonctionnent bien.

Quel serait le moyen d'utiliser un dataURI comme texture dans les opérations de dessin?

+0

Que voulez-vous dire: je veux l'utiliser comme texture? –

+0

Je veux dire un style de remplissage, donc il se répète. – BBaysinger

Répondre

1

Vous devez charger comme une première image (assurez-vous de gérer l'aspect asynchrone), donc essentiellement à définir une image comme motif:

var img = new Image; 
img.onload = imageIsReady; 
img.src = "data: ....."; // full uri here 

function imageIsReady() { 
    var pattern = ctx.createPattern(img, "repeat"); 
    ctx.fillStyle = pattern; 
    // fill, etc. 
} 
+0

Donc, est-il synchrone avec cette fonction de tirage là-bas? Ai-je besoin d'attendre un événement avant de définir le motif? – BBaysinger

+0

@BBaysinger vous devez juste attendre que l'image se charge (de manière asynchrone) en utilisant onload comme montré dans l'exemple (remplacez simplement drawImage par le réglage du pattern dans le dernier exemple). Après cela, vous pouvez le référencer et dessiner de manière synchrone (linéaire). – K3N

+0

@BBaysinger mis à jour la réponse pour une meilleure clarté. – K3N