dojox.gfx文本和组节点的边界框

Ela*_*ich 65 dojo svg vector-graphics dojox.gfx

dojo中getBoundingBox()的文档说:

返回形状的边界框.文本形状是基于点的对象,因此它不定义边界框.

我不明白.Web的矢量图形的任何理智的实现包括文本对象的边界框(raphaelJS和jQuery SVG)!在这里,"基于点的对象"是什么意思?

我没有找到Group对象的边界框的引用,但是在使用最新的Dojo版本时,也getBoundingbox返回null了Groups的组

我自己可以很容易地为矩形做边界框,但是我需要边界框的唯一真正有问题的形状是Group和Text.

我结束了hotpatching dojo,如:

dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
Run Code Online (Sandbox Code Playgroud)

哪个当然只适用于SVG输出前端.

但我想知道,我错过了什么吗?有没有更好的方法呢?

Ant*_*los 2

我没有找到 Group 对象的边界框的引用,但是当使用最新的 Dojo 版本时,getBoundingbox 也会为 Groups 返回 null

这个问题与此错误修复有关吗?对我来说听起来很像。它已Changed 7 months ago by pruzand被标记为固定

http://bugs.dojotoolkit.org/ticket/7019

2012-07-24 更新:我在本地下载了release-1.8.0rc1,并在已解决的票证中设置了相同的测试。这确实已在 1.8 中得到修复,并且 getBoundingBox 在组上返回 null 的问题已按照票证中所述得到解决。测试脚本成功返回:

bbox of group: {"x":0,"y":2,"endX":238,"endY":379,"width":238,"height":377}
transformed bbox: [{"x":277.7302117816355,"y":152.5448441073243},{"x":512.114456998541,"y":193.87311039205372},{"x":446.64909401810826,"y":565.1456332776561},{"x":212.26484880120276,"y":523.8173669929267}]
Run Code Online (Sandbox Code Playgroud)

另外,根据这篇 Twitter 文章,1.8 版预计将在一两周内发布。