0

我很好奇为 print()'d 文本计算所需的渲染空间或如何让 raphael 从中心向外渲染文本的正确方法,如

var an = Raphael("about-navlink", 69, 22), fonts = [0, an.getFont("arialbold")], about_navlink = an.print(0, 10, "about.", fonts[1], 22).attr({fill: "#000000"});

使文本从左侧开始。我想用 php 使这段代码的部分动态化,或者选择一个静态宽度,在该宽度内居中并放弃计算。我查看了 raphael 的文档,但在 print() 参考中没有找到任何讨论文本对齐的内容。任何帮助将不胜感激。谢谢!

4

1 回答 1

1

在 Raphael 呈现与您的文本对应的路径后,假设printed

  • 使用Raphael.pathBBox(printed.attr('path'))doc),计算负偏移量(-width/2 和 -height/2)

  • 创建一个矩阵,var m = Raphael.matrix()用你的偏移量m.translate(left, top)

  • 那么你有两种方法来应用它:

    1. 用于Raphael.mapPath绝对应用矩阵(它计算您必须设置的路径字符串:

      printed.attr(
          'path',
          Raphael.mapPath(printed.attr('path'), m)
      );
      
    2. 或者像简单的变换一样使用它:

      printed.transform(
          m.toTransformString()
      );
      

      如果此元素上有其他转换,请使用

      '...' + m.toTransformString()
      

      使您的转换在现有转换之前发生,并且

      m.toTransformString() + '...'
      

      让你的转变发生在之后。

于 2013-05-12T11:52:50.890 回答