【问题标题】:Raphael - find bounding box of text BEFORE printingRaphael - 在打印之前找到文本的边界框
【发布时间】:2012-03-23 12:35:40
【问题描述】:

下午,

我正在尝试使用 Raphael 绘制一个动态的“标尺”,它可以缩放(与页面的其余部分一起)并带有注释。

我发现 Raphael 的 pathBBox() 和 isBBoxIntersect 对于确定是否应该在某个点打印刻度或者是否太靠近另一个点而应该跳过它非常有用。

现在我需要注释一些刻度,并希望遵循类似的方法 - 注释最大的刻度,细化到最小的细节水平,但如果文本与已经绘制的一些相交,则跳过绘制文本。

不幸的是,我浏览 Raphael 文档时只向我展示了 Paper.print() 和 Paper.text() 方法,这两个方法都添加到了论文中。这意味着我必须添加,然后找到 bbox 并测试,如果不好则删除 - 这可能相当慢。

有没有办法在不打印的情况下找到我想要打印的某些文本的尺寸,以便我可以手动创建一个 bbox 对象并针对我存储的 bbox 进行测试?

一如既往,提前非常感谢! :-)

干杯, -奥利

【问题讨论】:

    标签: text raphael bounding-box


    【解决方案1】:

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

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

    我没有看到这个官方文档,但它可以工作,并且显然是跨浏览器的。

    【讨论】:

    • 是的...发现并正在玩它...问题是,paper.text 将其打印在纸上,而我想在决定是否先获取计划文本的边界框打印它
    • 啊...我担心它只是平原没有一个,直到你把它放在画布上。但是,您可以设置 opacity=0,直到您决定是否显示它。
    • 嗯,这是一个非常有趣的想法,彼得,它可能会完成这项工作。好想法:-)
    • 如果你要走那条路,你最好打电话给hide()show(),相应地,在shape上。
    • @Eliran Malka 为什么?您确定 .getBBox() 适用于隐藏元素吗?我不确定,但现在无法测试。我确实知道它适用于零不透明度元素(就像事件一样,有时很方便)。
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2021-11-08
    • 2019-07-07
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多