0

イラストレーターで編集しているSVGファイルがあります。このファイル内のパス情報を使用して、Raphaelオブジェクトを作成しました。私が今やりたいのは、図面のいくつかの部分にテキストを追加することです。問題は、RaphaelはXとYのコーディネートのみを受け入れ、SVGファイル内のテキストはマトリックスであるということです。

基本的に私はこれを回す必要があります:

<text transform="matrix(1 0 0 1 583 562)" font-size="12">Argentina</text>

このようなものに:

var t = paper.text(x, y, "Argentina");

それは可能ですか?テキストをアウトラインに変換しようとしましたが、結果として得られるパスは複雑になり、より軽いものが好きです。

4

2 に答える 2

3

特定のケースでは、マトリックスはとに変換されx: 583ますy: 562が、要素がスケーリングまたは回転されている場合、これらの値は誤解を招く可能性があります。

Raphaelで直接変換行列を適用できます。必要なのは...

transformation = Raphael
     .matrix(1, 0, 0, 1, 583, 562)
     .toTransformString();

text = paper
    .text(0, 0, "Argentina")
    .attr("font-size", 12)
    .transform(transformation)​

これで、要素に変換を適用したくない場合は、を実行することで、マトリックス変換をより人間が読める形式に変換できます。これにより、 Raphaelのドキュメントで詳しく説明されているconsole.log(transformation)ような文字列が得られます。t100,100r30,100,100s2,2,100,100

于 2012-07-06T16:49:50.450 に答える
1

あなたの問題を聞きました。SVGからRaphaelへのコンバーター(最初の1つ)を書いたときに、これらの問題を調べました。コンバーターはすべての変換をパスから外し、すべての座標を相対から絶対に変更します。svg Textには、頭を動かすことがたくさんあります。私が書いた隠蔽者は、テキストを変換するためのいくつかのサポートを提供します。SVGをコンバーターに通してみて、テキストを参照してどのJavaScriptが出力されるかを確認してみてください。コンバーターは少なくともいくつかのフォーマットを出力しますが、あなたが試すかもしれない2つがデフォルトの出力です。コンバーターのページに移動します

デフォルトを使用してSVGをアップロードします。「CollectRaphael」をクリックすると、生成されたインタラクティブなJavaScriptが表示されます。これは、「またはページ」リンクをクリックしてテキストでどのような作業が行われたかを確認するためのパスのみを扱います。

ヘルプが必要な場合は、もう一度確認します...

于 2012-07-06T15:30:30.987 に答える