2011-08-12 32 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