2012-04-19 6 views
4

Je suis en train d'ajouter une image à un fichier SVG .. j'ai essayé ce code ::ajouter l'image au fichier svg en utilisant javascript et jquery

drawImage : function(src, x, y, h, w) { 
     var img = document.createElementNS("http://www.w3.org/2000/svg", "image"); 
     var $img = $(img); 
     $img.attr('x', x); 
     $img.attr('y', y); 
     $img.attr('width', w); 
     $img.attr('height', h); 
     $img.attr('xlink:href', src); 
     $('g').append($img); 
    } 

mais l'image ne semble pas. quand je sélectionne toutes les images .. en utilisant $('image') Je trouve l'image, et je peux la sélectionner, mais quand même ... elle n'est pas visible. J'ai essayé d'enquêter sur ce problème, mais je n'ai rien trouvé. qu'est-ce que je fais mal ??

Répondre

0

J'ai trouvé un plugin jQuery qui a résolu mon problème jQuery.svg

il a plusieurs méthodes pour dessiner différentes formes, y compris les images.

Il semble qu'il ajoute des images en créant un nœud dom en utilisant JavaScript natif .. et il fonctionne

1

Que diriez-vous d'attribuer une largeur et une hauteur à $('g'), qui détient le $img dans votre code?

+0

Je ne l'ai pas encore essayé, mais je doute que ce soit le problème, comme je l'ai créé d'autres éléments (rect, cercle, chemin .. etc) et tous sont dessinés sur l'écran, d'ailleurs, je ne pense pas que je peux avoir cette capacité (changer la largeur et la hauteur de g) – zeacuss

+0

J'ai essayé .. mais ça n'a pas fonctionné – zeacuss

3

Vous pouvez utiliser la méthode setAttributeNS:

var img = document.createElementNS('http://www.w3.org/2000/svg','image'); 
img.setAttributeNS(null,'height','200'); 
img.setAttributeNS(null,'width','200'); 
img.setAttributeNS(null,'id','theID'); 
img.setAttributeNS('http://www.w3.org/1999/xlink','href','src'); 
img.setAttributeNS(null,'x','0'); 
img.setAttributeNS(null,'y','0'); 
$('#g').append(img); 
+0

il est une fonction simple .. Je ne pense pas que j'ai besoin d'une bibliothèque complète juste pour faire une tâche simple. et comme j'ai commenté la première réponse, j'ai créé des fonctions similaires à dessiner (rect, cercle, chemin, .. etc) et ils fonctionnent bien, et ils ressemblent à cela, mais je ne peux pas voir le problème – zeacuss

+0

l'utilisation de "setAttributeNS" ne fonctionnait pas non plus il a créé cet élément '' et il n'a pas montré dans l'écran (l'outil de développement de chrome indique son emplacement est à (0,0) !!) – zeacuss

+0

dans les appels de setAttributeNS, seulement le xlink est correct, tous les autres devraient passer null comme premier argument. –

Questions connexes