2

NSBezierPath パーサーに最適な SVG を探しています。クラス/ライブラリが SVG コマンドの文字列のみを受け取る場合は問題ありません。以下に例を示します。

M 435.722 403.542 h -232.44 v -293 h 232.44 c 0 0 0 35.108 0 81.019 c 0.049 2.551 0.079 5.135 0.154 7.748 c -0.208 15.567 12.1 13.618 19.624 28.192 c 2.584 5.005 5.875 30.5 4.875  34.5 c -7 19 -28.707 22.875 -24.653 44.854 c 0 2.667 0 5.31 0 7.923 C 435.722 364.425 435.722 403.542 435.722 403.542 z

クラス/ライブラリは必ずしも .svg ファイル自体を解析する必要はありませんが、すべての SVG コマンドを処理し、相対座標と絶対座標をサポートできる必要があります (つまり、SVG 1.1 仕様と完全に互換性がある必要があります)。ここにあります)。

Web でいくつかのクラスを見つけましたが、それらはすべて制限されており、上記の svg コマンドで失敗しました。最近の SVG から NSBezierPath への最適なパーサーはどれですか?

4

2 に答える 2

1

XML パーサーを使用して SVG ファイルを解析するプログラムを作成します。

これにより、次のコードに 1 つずつ入力できるパスの配列が得られます。

https://www.touchnoc.com/one_way_ticket_from_svg_to_nsbezierpath

** 上記のページで iOS 用のコードを探してください。

ただし、上記のコードは、相対パス座標ではなく、絶対パス座標に対してのみ機能します。Adobe Illustrator は相対パス座標のみを出力します。スケッチ (http://www.bohemiancoding.com/sketch/) というプログラムでイラストレーターから SVG を開くことができます。SVG をエクスポートすると、絶対パス座標でファイルが得られます。

あなたのパスはおそらく相対座標を使用しているため失敗しています - 私が見つけたほとんどのスクリプトが絶対座標を変換できる小さなc、または大きなC.

そして、そこに行きます。全体のプロセスは簡単ではありませんが、実行可能です! 私は経験から話しています。

于 2012-01-23T16:00:38.643 に答える
0

そのようなものは入手できないと思います。

NSBezierPathしかし、コマンドはメソッドに直接マップされるため、自分で非常に簡単に解析できるはずです。

コマンドが最初に来ることも役立つので、次のことができます。

  • スペースで配列に分割
  • 最初の要素を取り、コマンドにマップします
  • 次のx要素をパラメーターとして受け取ります (xコマンドによって異なります)。
  • でマッチングメソッドを呼び出しますNSBezierPath

文字列が非常に長い場合は、ストリームごとに解析することで同じことを行うこともできます。

于 2011-10-07T04:36:11.383 に答える