IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[SVG] Modifier une image à la volée


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 59
    Points
    59
    Par défaut [SVG] Modifier une image à la volée
    Salut,

    Je suis débutante en SVG et je voudrais afficher un image SVG dans un fichier html, mais je voudrais ajouter des choses a cette image quand l'utilisateur demande ....je voudrais faire cela en Java?
    estc-e que qqc peut me dire si cela est possible??et comment??

    Merci

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Je doute que ceci soit possible, la seule solution qui me parait viable, c'est de rendre la génération du SVG dynamique, et de modifier la source (attribut src) de la balise img (avec JavaScript) pour y inclure les modifications à faire...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Swoög
    Je doute que ceci soit possible, la seule solution qui me parait viable, c'est de rendre la génération du SVG dynamique, et de modifier la source (attribut src) de la balise img (avec JavaScript) pour y inclure les modifications à faire...

    bah non... normalement, on peut animer le svg avec du javascript, j'avais vu quelques exemples, mais je n'ai jamais testé moi-même
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Ce ne'est peut etre pas ce qui était demandé mais il est possible d'utiliser java sur un serveur pour generer les pages contenant cette image (servlet, JSP ...) et on peut donc modifier celle ci... Au niveau de lecteur de SVG en java je n'arrive pas à me rapeller de noms mais je crois que cela existe...

  5. #5
    Membre actif
    Avatar de Fildz
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 161
    Points : 272
    Points
    272
    Par défaut
    On peut programmer de l'interaction directement dans le fichier SVG, notamment avec l'attribut "begin" des balises d'animation :

    Exemple d'un code (il faudra cliquer sur les boutons rouge et vert pour faire apparaitre des points) :

    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
    36
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    <svg 
    	xmlns="http://www.w3.org/2000/svg"
    	xmlns:xlink="http://www.w3.org/1999/xlink"
    	width="10cm" 
    	height="10cm" 
    	viewBox="0 0 100 100" >
    	<use xlink:href="grille.svg#grille" />
    	<circle id="rouge" cx="20" cy="80" r="5"  fill="red" />
    	<circle id="vert" cx="40" cy="80" r="5"  fill="green" />	
    	<path id="chemin"
    		d="M 20,50
    			a1,2 0 0,0 10,0
    			a1,2 0 0,1 10,0
    			a1,3 0 0,0 10,0
    			a1,4 0 0,1 10,0
    			a1,5 0 0,0 10,0
    			a1,4 0 0,1 10,0
    			a1,3 0 0,0 10,0
    			a2,2 0 0,0 -70,0
    			"
    		fill="none" stroke="blue" stroke-width="1" />
    	<circle r="1.5" stroke-width="0" fill="red"  >
    		<animateMotion begin="rouge.mouseover" end="rouge.mouseout" dur="6s" fill="freeze" repeatCount="indefinite" >
    				<mpath xlink:href="#chemin"/>
    		</animateMotion>
    	</circle>
     
    	<circle r="1.5" stroke-width="0" fill="green"  >
    		<animateMotion 	begin="vert.click"	end="vert.click" dur="9s"  fill="freeze"  repeatCount="indefinite" >
    			<mpath xlink:href="#chemin"/>
    		<animateMotion>
    	</circle>
    </svg>
    Sinon pour insérer du javascript dans un fichier SVG j'avais réaliser une horloge :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    <?xml version="1.0" encoding="ISO-8859-1" ?><!-- ISO... au lieu d'UTF pour pouvoir utiliser les accents -->
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" onload="SetTime(evt)">
    	<title>Animation d'une horloge</title>
    	<desc>Horloge représenté avec un cercle et des chiffreS, avec 2 aiguilles sous forme de traits tournant selon le temps qui passe.</desc>
     
    	  <defs>
    	  <!-- Script permettant de faire tourné les aiguilles -->
        <script language="Javascript">
          <![CDATA[
     
            function SetTime(LoadEvent)
              {
                var Now = new Date(); // récupération de la date courante
     
                var Seconds = Now.getSeconds(); // Extraction des secondes courantes
                var Minutes = Now.getMinutes() + Seconds / 60; // Extraction des minutes et secondes (pour l'aiguilles des minutes)
                var Hours = Now.getHours() + Minutes / 60; // Extraction des heures et des minutes (pour l'aiguille des heures)
     
                var SVGDocument = LoadEvent.getTarget().getOwnerDocument();
     
               SVGDocument.getElementById("seconds").setAttribute('transform', 'rotate(' + (Seconds * 6) + ')'); // * 6 car 360 / 60 = 6
                SVGDocument.getElementById("minutes").setAttribute('transform', 'rotate(' + (Minutes * 6) + ')'); // * 6 car 360 / 60 = 6
                SVGDocument.getElementById("hours").setAttribute('transform', 'rotate(' + (Hours * 30) + ')');     // * 30 car 360 / 12 = 30
              }
     
          ]]>
        </script>
      </defs>
     
    	<g stroke="blue">
    		<circle cx="200" cy="200" r="150" fill="none" stroke-width="5" /><!-- Contour -->
     
    		<g transform="translate(200,200)">
    			<line x1="0" y1="-150" x2="0" y2="150" /> <!-- ligne permettant de faire les petits traits des heures -->
    			<line x1="0" y1="-150" x2="0" y2="150" transform="rotate(30)" /> 
    			<line x1="0" y1="-150" x2="0" y2="150" transform="rotate(60)" /> 
    			<line x1="0" y1="-150" x2="0" y2="150" transform="rotate(90)" /> 
    			<line x1="0" y1="-150" x2="0" y2="150" transform="rotate(120)" /> 
    			<line x1="0" y1="-150" x2="0" y2="150" transform="rotate(150)" /> 
     
    			<circle r="130" fill="white" stroke="white" /><!-- Permet de caché les lignes pour simuler des petits traits -->			
     
    		</g>
     
    		<g transform="translate(0,8)" font-size="20" font-family="Verdana" fill="blue" text-anchor="middle">
    			<text transform="translate(200,90) " > 12 </text>
    			<text transform="translate(200,200) rotate(30) translate(0,-110) rotate(-30)" >1</text>
    			<text transform="translate(200,200) rotate(60) translate(0,-110) rotate(-60)" >2</text>
    			<text transform="translate(200,200) rotate(90) translate(0,-110) rotate(-90)">3</text>
    			<text transform="translate(200,200) rotate(120) translate(0,-110) rotate(-120)">4</text>
    			<text transform="translate(200,200) rotate(150) translate(0,-110) rotate(-150)">5</text>
    			<text transform="translate(200,200) rotate(180) translate(0,-110) rotate(-180)">6</text>
    			<text transform="translate(200,200) rotate(-150) translate(0,-110) rotate(150)">7</text>
    			<text transform="translate(200,200) rotate(-120) translate(0,-110) rotate(120)">8</text>
    			<text transform="translate(200,200) rotate(-90) translate(0,-110) rotate(90)">9</text>
    			<text transform="translate(200,200) rotate(-60) translate(0,-110) rotate(60)">10</text>
    			<text transform="translate(200,200) rotate(-30) translate(0,-110) rotate(30)">11</text>
    		</g>
    	<g transform="translate(200,200)">
    			<g id="hours"> <!-- Aiguille des heures -->		
    				<line x1="0" y1="0" x2="0" y2="-60"  stroke="rgb(0,0,150)" stroke-width="6" >	
    					<animateTransform 
    						attributeName="transform" 
    						type="rotate"
    						from="0" to="360"
    						attributeType="XML" 
    						begin="0s"
    						dur="43200s" 
    						repeatCount="indefinite" />
    				</line>
    			<g>
     
    			<g id="minutes"><!-- Aiguille des minutes -->		
    				<line x1="0" y1="0" x2="0" y2="-80"  stroke="rgb(0,150,0)" stroke-width="3" >
    					<animateTransform 
    						attributeName="transform" 
    						type="rotate"
    						from="0" to="360"
    						dur="3600s"
    						repeatCount="indefinite" 
    						/>
    				</line>
    			</g>
    			<g id="seconds"> <!-- Aiguille des secondes -->		
    				<line x1="0" y1="0" x2="0" y2="-120" stroke="rgb(240,0,0)" stroke-width="1" >
    					<animateTransform 
    						attributeName="transform" 
    						type="rotate"
    						from="0" to="360"
    						dur="60s"
    						repeatCount="indefinite" 
    						/>
    				</line>
    			</g>
     
    		</g>	
    		<circle r="6" fill="blue" /><!-- Point central -->
    	</g>	
    </svg>
    J'espère que ça pourra t'aidé...

Discussions similaires

  1. [FLASH MX] Modifier une image
    Par sozie9372 dans le forum Flash
    Réponses: 4
    Dernier message: 09/12/2005, 01h24
  2. Modifier une image...
    Par laurent_ifips dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/11/2005, 21h40
  3. MFC + Afficher et modifier une image
    Par os dans le forum MFC
    Réponses: 4
    Dernier message: 07/03/2005, 19h20
  4. modifier une image
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 11/02/2005, 10h17
  5. Modifier une image par pixels
    Par mateo.14 dans le forum MFC
    Réponses: 10
    Dernier message: 21/01/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo