Text Raphael-打印前查找文本的边界框

Text Raphael-打印前查找文本的边界框,text,raphael,bounding-box,Text,Raphael,Bounding Box,下午好, 我试图画一个动态的“标尺”,它可以缩放(和页面的其余部分一起),并使用拉斐尔进行注释 我发现拉斐尔的pathBBox()和isBBoxIntersect非常有用,可用于确定是否应在某个点打印毕业证书,或者是否与另一个点太近,因此应跳过毕业证书 现在我需要注释一些刻度,并希望遵循类似的方法-注释最大的刻度,向下处理到最小的细节级别,但如果文本与已绘制的部分相交,则跳过绘制文本 不幸的是,我对Raphael文档的浏览只显示了Paper.print()和Paper.text()方法,这两种方

下午好,

我试图画一个动态的“标尺”,它可以缩放(和页面的其余部分一起),并使用拉斐尔进行注释

我发现拉斐尔的pathBBox()和isBBoxIntersect非常有用,可用于确定是否应在某个点打印毕业证书,或者是否与另一个点太近,因此应跳过毕业证书

现在我需要注释一些刻度,并希望遵循类似的方法-注释最大的刻度,向下处理到最小的细节级别,但如果文本与已绘制的部分相交,则跳过绘制文本

不幸的是,我对Raphael文档的浏览只显示了Paper.print()和Paper.text()方法,这两种方法都添加到了本文中。这意味着我必须添加,然后找到bbox并进行测试,如果坏了就删除——这可能相当慢

有没有一种方法可以在不打印的情况下找到我想要打印的文本的尺寸,这样我就可以手动创建一个bbox对象,并根据存储的bbox进行测试

和往常一样,非常感谢您!:-)

干杯, -Oli

您可以在文本上使用.getBBox()

 var text = paper.text(...);
 if (text.getBBox().width > max) ...;
我没有看到正式的文档,但它可以工作,而且显然是跨浏览器的

可以对文本使用.getBBox():

 var text = paper.text(...);
 if (text.getBBox().width > max) ...;

我没有看到正式的文档,但它可以工作,而且显然是跨浏览器的

是的…找到了,我在mo玩它。。。问题是,paper.text将它打印在纸上,而我希望在决定是否打印它之前获得计划文本的边界框。。。恐怕只有当你把它放在画布上时,它才会有一个。但是,你可以将不透明度设置为0,直到你决定是否显示它。嗯,这是一个非常有趣的想法,彼得,它可能会完成这项工作。好主意:-)如果你要走这条路,你最好在
形状上相应地调用
hide()
show()
,为什么?你确定.getBBox()对隐藏元素有效吗?我不确定,但现在不能测试。我知道它可以在零透明度的元素上工作(就像事件一样,有时会很方便)。是的…我发现了,我正在mo玩它。。。问题是,paper.text将它打印在纸上,而我希望在决定是否打印它之前获得计划文本的边界框。。。恐怕只有当你把它放在画布上时,它才会有一个。但是,你可以将不透明度设置为0,直到你决定是否显示它。嗯,这是一个非常有趣的想法,彼得,它可能会完成这项工作。好主意:-)如果你要走这条路,你最好在
形状上相应地调用
hide()
show()
,为什么?你确定.getBBox()对隐藏元素有效吗?我不确定,但现在不能测试。我确实知道它可以在零透明度元素上工作(事件也是如此,有时很方便)。