18

これは非常に単純な要求だと思いますが、検索しても決定的な答えが見つからないようです。ウィンドウ内の特定のビジュアル要素の境界を、他の親要素と比較して決定するにはどうすればよいですか?

使用してみましLayoutInformation.GetLayoutSlotたが、これは 0,0 を返すようRectで、要素の実際の位置を反映していません。

私がやろうとしているのは、を使用してウィンドウの「スクリーンショット」を撮り、RenderTargetBitmapそれを特定の要素にトリミングすることですが、要素の境界を取得して、ビットマップをトリミングする対象を知ることができません!

4

4 に答える 4

21

それは非常に簡単です:

public static Rect BoundsRelativeTo(this FrameworkElement element,
                                         Visual relativeTo)
{
  return
    element.TransformToVisual(relativeTo)
           .TransformBounds(LayoutInformation.GetLayoutSlot(element));
}

実際、別のメソッドに入れるのはやり過ぎかもしれません。

于 2010-08-13T05:35:45.923 に答える
1

気にしないでください、私は最終的に( /またはLayoutInformation.GetLayoutSlot()のいずれかを使用できたかもしれませんが)との組み合わせを使用してそれを理解することができました。ActualWidthActualHeightRenderSizeUIElement.TranslatePoint()

次のように単純な場合でも、かなり複雑なソリューションのようです。

myElement.GetBounds( relativeElement );

しかたがない。たぶん、拡張メソッドの時間です。:)

于 2010-08-12T22:23:34.377 に答える