2011-08-12 50 views
1

我需要獲取文本邊界框以在渲染任何內容之前調整佈局。隨着一些試驗,我發現,我收到「getBBox」實際呈現的文本(或「getComputedTextLength」)將返回一個非零值:SVG:計算邊界框而不顯示對象

var group = svgDocument.createElementNS(svgns, "g"); 
    for(i=0; i <= nYblocks; ++i) { 
     str = svgDocument.createTextNode(strings[i]); 
     obj = tnode.cloneNode(true); 
     obj.setAttributeNS(null, "y", y1); 
     obj.appendChild(str); 
     group.appendChild(obj); 
     y1 += yBlockPx; 
    } 

    svgDocument.documentElement.appendChild(group); // **REQUIRED** 
    bb = vgroup.getBBox(); 

問題:有沒有呈現文本的好辦法所以它不會實際顯示?我是否應該調整顏色或不透明度,或者我可以做些巧妙的工作來渲染其他地方,也許在不同的樹中?

謝謝 -

回答

1

我認爲最簡單的方法是用設置爲隱藏的可視性繪製:

obj.setAttributeNS(null, "visibility", "hidden"); 
+0

謝謝 - 我會做到這一點。 – EML