0

print() されたテキストに必要なレンダリング スペースを計算する適切な方法、またはラファエルにテキストを中心から外側にレンダリングさせる方法について興味があります。

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で動的にするか、中央に配置して計算を控える静的な幅を選択したいと思います。私はラファエルのドキュメント全体を見てきましたが、テキストの配置について説明している print() リファレンスには何も見つかりません。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

ラファエルがテキストに対応するパスをレンダリングした後、次のように言いましょうprinted:

  • Raphael.pathBBox(printed.attr('path'))( doc ) を使用し、負のオフセットを計算します (-width/2 および -height/2)

  • var m = Raphael.matrix()オフセット ( ) で変換するマトリックスを作成するm.translate(left, top)か、オフセット値をマトリックス コンストラクターの引数に直接入れます (左と上の 5 番目と 6 番目の引数)。

  • 次に、それを適用する 2 つの方法があります。

    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 に答える