Bonjour,
Je n'arrive pas à placer correctement mes élements svg dans ma zone de travail.
Je récupére correctement les coordonnées de la souris pas de soucis...
Je suis sous IE avec SVGViewer 3.03
Sur firefox, je ne préfére pas en parlé mnt... mon appli ne fonctionne pas du tout ^^', enfin bref, c'est pas le sujet...
extrait Svg:
extrait Js:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <svg id="root" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 800 600" preserveAspectRatio="xMinYMin meet" onload="init(evt)" onkeydown="saisir(evt)" zoomAndPan="disable"> <g id="font_tools" transform="translate(670 150)" onmousemove="setFontSize(evt)" onmouseup="sizeclick=false;"> <line id="sizer" x1="25" y1="10" x2="25" y2="30" stroke="grey" stroke-width="2" onmousedown="sizeclick=svgdoc.getElementById('sizer');" /> </g>
Donc, j'ai une ligne, et je peux la deplacer, pas de soucis, sauf qu'elle n'en fait qu'à sa tête, et qu'il est décalé par rapport à ma souris.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 function coordo_x(x_mouse, dim) { var x_geom; if (ASV == "6") { if (dim[0] == 800) var matrix = svgdoc.getScreenCTM().inverse(); else var matrix = svgws.getScreenCTM().inverse(); x_geom = parseFloat(evt.clientX * matrix.a + evt.clientY * matrix.c + matrix.e); } else { var ratio = dim[0]/window.innerWidth; x_geom = x_mouse * ratio; } return x_geom; } function setFontSize(evt) { var dim_sizetools = new Array(800, 600); action = "fontsize"; if (sizeclick) { var xMouse = Math.round(coordo_x(evt.clientX, dim_sizetools) - 670); if (xMouse < 0) xMouse = 0; else if (xMouse > 150) xMouse = 150; sizeclick.setAttributeNS(null, "x1", xMouse); sizeclick.setAttributeNS(null, "x2", xMouse); txtSize = Math.round(xMouse / (150 / 60)); var txt = svgdoc.createTextNode(txtSize); var visual = svgdoc.getElementById("sizeviz"); visual.removeChild(visual.firstChild); visual.appendChild(txt); } if (current_element != null && current_element.nodeName == "text") { current_element.setAttributeNS(null, "font-size", txtSize); } }
Ce decallage n'est pas fixe, plus je vais vers la droite plus il s'aggrandi et si je reviens vers la gauche il diminue...
Bon de toute maniére, mon probléme principale et la récuperation des coordonnées.
Partager