2014-01-29 20 views
0

由於它目前爲SVG-編輯2.6:當選擇框與對象b.box(邊界框)相交選擇SVG元素,其中的選擇框完全吞沒對象

選擇工具選擇對象。

我認爲這是錯誤的用戶體驗。

選擇工具應該只選擇對象之一:

- 席捲整個對象 - 或者 - 相交的實際對象

我在整個應用程序的LOC的1000的丟失。任何人有一個想法,我可以擺弄這些代碼,使其工作和/或任何可能的想法如何實現我的任何上述建議?

+3

爲什麼不問問svg-edit用戶組? https://groups.google.com/forum/#!forum/svg-edit –

回答

1

,以便選擇元素時選擇框「席捲整個對象」,你可以試試這個: -

1)同時使選擇框,選中元素的所有四個角是否在選擇框裏面與否。 你可以使用getBBox()獲得四點元素。如: -

var bbox=element.getBBox(); 
var x=bbox.x; 
var y=bbox.y; 
var width=bbox.width; 
var height=bbox.height; 

var point1={ 
x:x, 
y:y 
}; 

var point2={ 
x:x+width, 
y:y 
}; 

var point3={ 
x:x+width, 
y:y+height 
}; 

var point4={ 
x:x, 
y:y+height 
}; 

現在有了選擇矩形比較所有的點,如果所有人都選擇矩形內,那麼,元件選擇做。

2)現在關於'實際對象'。我認爲你的意思是元素的實際形狀,而不是BBox。爲此,一種解決方案是將您的形狀轉換爲「路徑」,然後獲取路徑的所有「節點」。最後逐一比較所有這些節點(點)與選擇矩陣。

得到點的路徑,試試這個功能: -

function path2Array(path) { 

         var pointsArray = new Array(); 
         for (var i = 0; i < path.getTotalLength(); i++) { 
           var point = path.getPointAtLength(i); 
           var cordinatesXY = { 
             x: point.x, 
             y: point.y 
           }  
           pointsArray.push(cordinatesXY); 
         } 
         return pointsArray; 
       } 

;

(這就是我想出的)。 :-)