65

dojo 中 getBoundingBox() 的文档说:

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

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

我没有找到 Group 对象的边界框的参考,但是在使用最新的 Dojo 版本时,也会getBoundingbox返回nullGroups

我可以自己轻松地为矩形制作边界框,但我需要边界框的唯一真正有问题的形状是组和文本。

我像这样结束了热补丁道场:

dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});

当然,这仅适用于 SVG 输出前端。

但我想知道,我错过了什么吗?有没有更好的方法来做到这一点?

4

1 回答 1

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}]

同样值得一提的是,根据这篇推特帖子,1.8 版将在一两周内发布。

于 2012-07-24T03:08:44.917 回答