詳細を表示するために多くのレンダリングを行う非常に大きな子コントロールがありますが、そのコントロールの一部のみが実際に表示されるため (直接の親ではなく、階層のさらに上の何かによってクリップされます)、レンダリングのみが必要です。 OnRender 呼び出し中の可視部分。
次の図を考えてみましょう。子は 100x50 ですが、可視領域は子座標の (10,5) と (100,50) に角がある長方形です。それが私たちが探しているエリアです。
注: クリッピングを行っているのは親ではない可能性があるため、子から親への座標変換を単純に実行してクリッピングをテストすることはできません。
ScrollViewer 内にネストされた Canvas コントロールを検討してください。内側の Canvas は、外側の Canvas の境界内に完全に配置される可能性がありますが、外側の Canvas は ScrollViewer によってクリップされる可能性があるため、内側の Canvas も視覚的にクリップされます。
ビジュアル ツリーをたどって各親をテストすると、パフォーマンスが低下します。
コントロールの可視領域の境界を取得できる WPF に組み込まれているものはありますか?