2010-09-10 5 views
0

Je construis une application avec Raphaël. J'ai fait mon travail sur les vecteurs, maintenant ce que je veux, c'est que je veuille zoomer les vecteurs. J'ai implémenté ce code là-dessus, mais quand j'effectue un zoom arrière sur l'élément, ses coordonnées changent aussi avec lui, ce que je ne veux pas.Problème de zoom avec Raphaël

S'il vous plaît aidez-moi. Merci d'avance.

Voici mon code:

var raphael=Raphael(20,20,500,500) 
    var dress=raphael.rect(50,30,200,300) 
    dress.attr(
    { 
     fill:"green", 
     stroke:"black", 
     opacity:"0.3" 

    } 
) 
    var mdipoint=raphael.circle(150,175,2).attr(
    { 
     fill:"black", 
     stroke:"black" 
    } 
) 
    dress.toFront() 

dress.mousemove(function(){ 

     var c= dress.scale(0.5) 
     //var x,y; 
     xx=event.pageX 
     yy=event.pageY 
     document.getElementById("t1").value=xx 
     document.getElementById("t2").value=yy 



    //  var x,y; 
    // x=event.pageX-150 
     // y=event.pageY-175 
     //document.getElementById("t1").value=x 
     //document.getElementById("t2").value=y 
     // alert(x+","+y) 



}) 

    dress.mousemove(function(event){ 

     var x,y; 
     x=event.pageX-70 
     y=event.pageY-50 
     document.getElementById("t1").value=x 
     document.getElementById("t2").value=y 

    }) 
    dress.mouseout(function(){ 

     document.getElementById("t1").value="" 
     document.getElementById("t2").value="" 
    }) 
+0

Comment la taille d'un élément peut-elle changer sans que ses coordonnées de coin ne changent? ---------- Pourriez-vous décrire plus en détail à quoi vous voulez que votre résultat ressemble? –

Répondre

1

Pour retourner quelque chose à sa taille d'origine, utilisez .scale(1). L'échelle est toujours relative à la taille d'origine et non à la taille précédente.

Donc, pour rétrécir le rectangle sur mouseover puis le retourner à sa taille d'origine, avec ses coordonnées d'angle d'origine, utilisez quelque chose comme:

dress.mouseover(function(){ 
      // Shrink rectangle 
     dress.scale(0.5) 
    }); 
    dress.mouseout(function(){ 
      // This will return it to original size 
     dress.scale(1); 
    }) 

simplified jsFiddle example

(Vous n'avez pas besoin d'assigner des opérations de mise à l'échelle aux variables)