2011-08-09 3 views
2

Si je dessine un rectangle sur une toile, remplissez-la d'une couleur unie. Est-il possible de le remplir de nouveau avec un png transparent, de sorte que je peux toujours voir la couleur d'origine en arrière-plan?Javascript - Toile - superposition d'un png transparent sur une couleur précédemment remplie

Quelque chose comme, code fictif -

ctx.beginPath(); 
    ctx.lineTo(//draw a rectangle) 
    ctx.fillStyle = "#FF0000" 
    ctx.fill(); 
    var imageObj = new Image(); 
    function drawPattern() { 
     var pattern = ctx.createPattern(imageObj, "repeat"); 
     ctx.fillStyle = pattern; 
     ctx.fill(); 
    } 
    imageObj.onload = drawPattern; 
    imageObj.src = "images/dot.png"; //transparent png 

J'ai essayé une approche similaire et il ne fonctionne pas.

Existe-t-il une autre façon de procéder? Est-ce que je manque quelque chose?

+0

Il fonctionne pour moi sur Chrome. Êtes-vous sûr que c'est transparent? – pimvdb

+0

hmm, va vérifier à nouveau. Merci – Finnnn

Répondre

4

Ce que vous avez fonctionnera très bien. Assurez-vous d'avoir un fichier PNG vraiment transparent.

Voici un exemple de travail de votre code:

http://jsfiddle.net/BDXc7/

+0

Merci beaucoup pour l'exemple, a éclairci les choses pour moi. C'était le png. * se bloque la tête dans la honte * – Finnnn

+0

Ne pas répéter le motif avec le contexte traduit montre un problème de transparence. http://jsfiddle.net/e8dpzt2o/ – jeeeyul

Questions connexes