1

私はインタラクティブなWPFグラフ/ツリーツールに取り組んでおり、ノードとそれらの間のリンクをキャンバスに配置しています。ノードはユーザーコントロールであり、リンクは単純な線の形であり、現在、リンクはノードの中心から別のノードの中心に移動します。

この問題は、ノードを少し透明にしたいときに発生し、ノードの背後にあるリンクが表示されます。最も便利な解決策は、線にクリッピングまたは不透明マスクを適用することであると考えました。これにより、線はノードの後ろに描画されませんが、私は一生の間、どのように理解することができませんか?

基本的に、ラインのクリッピングジオメトリとして使用するために、ノードからバウンディングボックスジオメトリを理解することはできません。もちろん、別の解決策にも興味があります。

4

3 に答える 3

1

あなたが解決策を考えすぎているように私には思えます。リンクのロジックを変更して、線がノードの中心からではなく正しい側で開始/終了するようにしないのはなぜですか? これを達成するには、もう少し計算する必要があるだけです。

つまり、Visual の境界ボックスを取得するには、VisualTreeHelper::GetContentBoundsヘルパー メソッドを使用できます。

于 2009-10-24T18:50:00.400 に答える
0

私たちは似たようなことに取り組み、解決策はリンクとノードを異なるレイヤーに配置することでした。

したがって、ノードをリンクの上に表示し、リンクの先端をノードで隠したい場合は、レイヤーの z オーダーを変更して、ノード レイヤーがリンク レイヤーの前になるようにします。

レイヤーとして VisualHosts (ここに VisualHost クラスがあります) を使用し、ノードとリンク オブジェクトは DrawingVisuals でした。

正常に動作し、ノードの境界などを見つけるのに苦労する必要はありません。

于 2012-06-11T09:10:47.540 に答える