InkscapeのSVGの要素の回転のための絶対座標を取得します。グラフィックスデザイナーと繰り返しているので、InkscapeのようなWYSIWYGエディターで2Dグラフィックスの描画呼び出しを常に書き直すよりもはるかに簡単です。アニメーションや動的テキストを必要とする要素の場合、SVG要素はIDで容易に識別できるので、レンダリング前にプログラムで更新することができます。レンダリングの流れは次のようになります。は私が最終的に埋め込まれたデザインになりますプロジェクトのためのいくつかのディスプレイ・インタフェースのプロトタイプを作成するためのwxPythonを使用しています
Inkscape SVG as XML --> Python modification of XML --> Drawing onto wxPython buffered canvas using Cairo and pyRSVG
私はゲージのために固定された軸を中心に揺動針をアニメーション化したいと思います。針を定義するために、グラフィックスデザイナは、グラフィカルな「針」と小さな円である「needle_axis」要素を描きます。それで、私は、所望の角度と "needle_axis"の中心座標を使って変換プロパティを設定できると考えました。しかし、相対位置は他の変換のために影響を受けている可能性があるため、回転軸の絶対位置の決定は重要ではありません。
私は要素の絶対座標を決定するためのPythonライブラリを見つけることができないよう、そして、それはSVGの仕様の一部を実装しようとする車輪の再発明のように感じています。それを計算するために必要です。 rsvg APIにはrsvg_handle_get_dimensions_sub
とarsvg_handle_get_position_sub
が要素のサイズと位置を取得する機能がありますが、pyRSVGのAPIは見つかりません。
はそれを手動で計算するよりも、回転軸を見つけるための良い方法はありますか?例としてInkscape SVG file and test snippetが要点として利用可能です。
座標を抽出する方法の詳細を教えてください。私は実際にこれらの行に沿って何かをやり始めましたが、変換と絶対/相対座標に関するSVG仕様のすべてを再実装する必要があることに気付きました。私はフレーム間でSVG XMLを変更するだけで、実際には十分に良いフレームレートを得ています。これは、このファイルI/Oを回避しますが、pyRSVGにはツリーごとにツリー全体を再解析する必要があるため、依然として問題はありません。 – superlou
SVGソフトウェアが座標に変換を適用せず、それらをSVG変換として残しておけば、いくつかの問題が発生する可能性があります。しかし、私はあなたがInkscapeで反対の動作を強制することができると思います。次に、SVGパスからカイロパス(http://www.cairographics.org/manual/cairo-Paths.html)を構築する必要があります。ない**その**難しいが、あなたはまだパスについてSVGの仕様を読んでする必要があります:http://www.w3schools.com/svg/svg_path.asp – halflings
あなたは相対座標を使用せずにエクスポートするInkscapeのを強制することができますが、私すべての状況下でトランスフォームを使用できないようにするオプションが見つかりませんでした。私は、カイロのパスやカイロのパスを生成するためのオブジェクトにSVGのデータを取得する方が良いだろうと私は同意するが、私はそこに "ロール - あなた自身の"翻訳する必要があるとは思わないので質問を開いたままになりますこの機能を必要とするすべての人のためのコード。 – superlou