svg+javascript+path直线缩放拖动变形

==============================================   

station.js

 

 var SVGDocument = null;  
      var SVGRoot = null;
      var TrueCoords = null;
      var Point = null;
      var background = null;
      var DragTarget = null;
      var dArray  = new Array(12);
      var dragger = null;
      var x; 
      var y;
      var X1;
      var Y1;
      var X2;
      var Y2;
      var CX1; 
      var CY1
      var CX2;
      var CY2;
      var CX3;
      var CY3;
      var xx2;
      var yy2;
      var newXx = 0;
      var newYy = 0;
      var moveObject = null;
      var ByNexu = null;  
      var rectbus1Y ;
      var rectbus3Y;
      var yUpdate ;
      var yz;
      var noover = null; //拖动的时候不感知

function Doonload(evt){
   
         SVGDocument = evt.target.ownerDocument;
         SVGRoot = SVGDocument.documentElement;
      TrueCoords = SVGRoot.createSVGPoint();
         GrabPoint = SVGRoot.createSVGPoint();
      background = SVGDocument.getElementById("background");
}

function Doonmouseup(evt){
 if(dragger != null){
        yz =  parseInt(rectbus1Y)+parseInt((rectbus3Y-rectbus1Y)/2); 
    if(ByNexu!=null)
        {
     if(yUpdate<yz){
       dragger.setAttribute("d","M"+X1+","+Y1+",L"+XL1+","+YL1+",C"+XL1+","+YL1+","+XL1+","+YL1+","+XL1+","+YL1+",L"+XL1+","+YL1); dragger = null; 
     }
     if(yUpdate>yz){
       dragger.setAttribute("d","M"+X1+","+Y1+",L"+XL1+","+YL1+",C"+XL1+","+YL1+","+XL1+","+YL1+","+XL1+","+YL1+",L"+X2+","+rectbus3Y); dragger = null; 
     } 
        }              
    else{
               var a = XL1+parseFloat(6.5000000); 
      var b = YL1+parseFloat(0.0000000);
      var c = XL1+parseFloat(6.5000000);
      var d = YL1+parseFloat(13.0000000);
      var e = XL1+parseFloat(0.000000);
      var f = YL1+parseFloat(13.0000000);  
            if(yUpdate<yz){
       dragger.setAttribute("d","M"+X1+","+Y1+",L"+XL1+","+YL1+",C"+XL1+","+YL1+","+XL1+","+YL1+","+XL1+","+YL1+",L"+XL1+","+YL1);dragger = null;   
             }
               if(yUpdate>yz){ 
                  dragger.setAttribute("d","M"+X1+","+Y1+",L"+XL1+","+YL1+",C"+a+","+b+","+c+","+d+","+e+","+f+",L"+X2+","+rectbus3Y); dragger = null;
       }
    }
   }
  ByNexu = null; 
  if (DragTarget)
         {
              var targetElement = evt.target;
            DragTarget.setAttribute("pointer-events", "all");
            if ( "Folder" == targetElement.parentNode.id )
            {
               targetElement.parentNode.appendChild( DragTarget);
            }
           moveObject = DragTarget;
           DragTarget = null;   
         }
}

function Doonmousedown(evt){
   var onObject =  evt.getTarget();
  
   ParsePath(evt);
         x=evt.clientX 
         y=evt.clientY 
         X1 =  parseFloat(dArray[0]) ;  
        Y1 =  parseFloat(dArray[1]) ;
       X2 =  parseFloat(dArray[10]) ; 
        Y2 =  parseFloat(dArray[11]) ;
        XL1 =  parseFloat(dArray[2]) ;  
   YL1 =  parseFloat(dArray[3]) ;
         CX1 =  parseFloat(dArray[4]) ;  
         CY1 =  parseFloat(dArray[5]) ;
         CX2 =  parseFloat(dArray[6]) ;
         CY2 =  parseFloat(dArray[7]) ;
         CX3 =  parseFloat(dArray[8]) ;
         CY3 =  parseFloat(dArray[9]) ;
  
  
         if ( background != onObject )
          {
             if(((xx2<6)&&(yy2<6)))
      {
   dragger = onObject ; 
         dragger.getStyle().setProperty("cursor", "n-resize"); 
           }
            else{
            DragTarget = onObject.parentNode ; 
         DragTarget .getStyle().setProperty("cursor", "move"); 
            DragTarget.parentNode.appendChild( DragTarget );
            DragTarget.setAttribute("pointer-events", "none");
            var transMatrix = DragTarget.getCTM();
            GrabPoint.x = TrueCoords.x - Number(transMatrix.e);
            GrabPoint.y = TrueCoords.y - Number(transMatrix.f);
         }
      }
}

function Doonmouseover(evt){
   var onObject =  evt.getTarget();
      ParsePath(evt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值