2

背景情報/レイアウト

UIの一部として放射状ツリーを表示しようとしています。ツリーのデータは静的であり、通常は数千のノードがあります。それ自体を描くだけでは大したことではありません。GTKとCairoについて知っていることですでにそれを管理できます。

私の問題は、背景画像の上にツリーを表示し、ユーザーがズームインおよびズームアウトしたり、対話したりできるようにするパネルが必要なことです(ノードをクリックして情報を取得します)。

これは私のアプリケーションのレイアウトを示す非常に大雑把な写真です。黄色い部分は私が木が欲しいところです。レイアウトモックアップ

これが4層のツリー表示です。全体がズーム可能である必要があります(背景画像を含む)。ツリー表示レイヤー

  1. 対象のノード(選択されたノード、またはユーザークエリに一致するノード)とそれらの間のパスを示すハイライト。
  2. ツリー内のノード。これらはクリック可能にするつもりです。
  3. 放射状木のリング。
  4. 背景画像。

私は何ができますか:

  • 背景画像をレンダリングします。
  • 木の指輪を描きます。
  • ツリーのノードを描画します。
  • ノードとノード間のパスの周りにハイライトを描画します。

私がやりたいこと:

  • 全体をズーム可能にします。
  • ノード(現在または画像)をクリック可能にします。

背景画像を再スケーリングするために、でピクセルバッファを操作してみました。結果を正確に誇りに思っているわけではありませんが、背景画像だけである限り、これは機能的です(ただし、あまりエレガントではありません)。ノードをクリック可能にし、全体をズーム可能にすることになると、しかし、私は少し迷っています。特に後半。

私はLinux上のGTK用のMonoとC#バインディングを使用してきました。GUIキットを大幅に簡単に変更できる場合は、GUIキットを変更したいと思いますが、それが実際に非常に簡単になる場合に限ります。ツリーのサイズ(1000 <N <10000、ここでNはツリー内のノードの数)を考えると、ズーム時のパフォーマンスが問題になる可能性がありますが、何百万ものノードなどを扱っているわけではありません。

4

0 に答える 0