私はpython-clutter 1.0を使用しています
挑戦という形での私の質問
キーを押すことで CairoTexture アクターにズームアップできるようにするコードを記述します。各段階で (cairo によって) アクターを再描画できるようにします。アクターのサイジング。
Inkscape のようなものと、ベクトルを拡大する方法を考えてみてください。どの倍率でもベクトルがきれいに保たれるか。パス (カイロline_to
コマンドの束など) を CairoTexture アクターに配置し、同じトリックが発生するようにします。
もっと詳しく
アクターのグループを使用する小さな SVG エディターを目指しています。各アクターは、1 つのパスに専念しています。を使用して「ズーム」しSomeGroup.set_depth(z)
、z を大きく/小さくします。これまでのところすべて順調です。ただし、アクターがカメラに近づくほど、新しい見た目のサイズに合わせてテクスチャが引き伸ばされます。
Clutter に両方を実行させる方法が見つからないようです。
- アクターの実際のサイズは静的のままにします (つまり、最初のサイズ)。
- その下にあるサーフェスを (ズームインして) 大きなものに交換し、パスを再描画できます (そして、カイロ マトリックスを使用してコンテキストのスケーリングを実行します)。
set_size
またはを使用すると、意図しないset_surface_size
ようにアクターが大きくなります。表面(基礎となるデータ)を大きくしたいだけです。
(これの用語がよくわかりません。おそらくミップマッピングですか?)
別の言い方をすると、ポリゴンが大きくなり、そのテクスチャ配列のサイズを増やして、より大きなポリゴンにマップできるようにします。
再作成した2 番目のサーフェス (pycairo を使用) をアクターの見かけのサイズget_transformed_size
(set_from_rgb_data
アクターの寸法ではなく、表面のサイズです。
これに関する問題は、a) クラッターが新しいサイズを無視し、古い幅/高さにのみ描画されることと、b) RGBA と ARGB32 のようなものが色のメルトダウンを引き起こすことです。
私はどんな代替案にもオープンです。すべての木が欠けている森の中に立っていることを願っています!
\d