VisualTreeHelper.FindElementsInHostCoordinates メソッド

定義

オーバーロード

FindElementsInHostCoordinates(Point, UIElement)

アプリ UI の指定した x-y 座標ポイント内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、そのポイントを共有するビジュアル ツリーのコンポーネントを表します。

FindElementsInHostCoordinates(Rect, UIElement)

アプリ UI の指定した Rect フレーム内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、四角形の領域を共有するビジュアル ツリーのコンポーネントを表し、オーバードローする要素が含まれる場合があります。

FindElementsInHostCoordinates(Point, UIElement, Boolean)

アプリ UI の指定した x-y 座標ポイント内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、そのポイントを共有するビジュアル ツリーのコンポーネントを表します。

FindElementsInHostCoordinates(Rect, UIElement, Boolean)

アプリ UI の指定した Rect フレーム内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、四角形の領域を共有するビジュアル ツリーのコンポーネントを表し、オーバードローする要素が含まれる場合があります。

FindElementsInHostCoordinates(Point, UIElement)

アプリ UI の指定した x-y 座標ポイント内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、そのポイントを共有するビジュアル ツリーのコンポーネントを表します。

public:
 static IIterable<UIElement ^> ^ FindElementsInHostCoordinates(Point intersectingPoint, UIElement ^ subtree);
/// [Windows.Foundation.Metadata.DefaultOverload]
/// [Windows.Foundation.Metadata.Overload("FindElementsInHostCoordinatesPoint")]
 static IIterable<UIElement> FindElementsInHostCoordinates(Point const& intersectingPoint, UIElement const& subtree);
[Windows.Foundation.Metadata.DefaultOverload]
[Windows.Foundation.Metadata.Overload("FindElementsInHostCoordinatesPoint")]
public static IEnumerable<UIElement> FindElementsInHostCoordinates(Point intersectingPoint, UIElement subtree);
function findElementsInHostCoordinates(intersectingPoint, subtree)
Public Shared Function FindElementsInHostCoordinates (intersectingPoint As Point, subtree As UIElement) As IEnumerable(Of UIElement)

パラメーター

intersectingPoint
Point

決定ポイントとして使用するポイント。 このポイントでは、特定の要素ではなく、アプリ ウィンドウの座標空間を使用しています (指定した場合は サブツリー ではありません)。

subtree
UIElement

検索するオブジェクト。 指定した交差するPoint 座標に存在する要素のセット全体にサブツリー オブジェクトが存在する場合、戻り値にはサブツリー オブジェクトと、サブツリーよりも z オーダーが高いオブジェクトのみが含まれます。z オーダーの逆数で一覧表示されます。 サブツリー オブジェクトが交差するPoint 座標に存在しない場合、戻り値は空になります。

戻り値

指定したポイントにあるビジュアル ツリーコンポジション内の UIElement オブジェクトの列挙可能なセット。z オーダーの逆数で一覧表示されます。

属性

これは、特定の Name の要素が、アプリの UI の Point にある z オーダーの任意の場所に存在するかどうかを判断するユーティリティ メソッドの例です。

private bool DoesPointContainElement(Point testPoint, string elementName, UIElement referenceFrame)
{
    IEnumerable<UIElement> elementStack = 
      VisualTreeHelper.FindElementsInHostCoordinates(testPoint, referenceFrame);
    foreach (UIElement item in elementStack)
    {
        FrameworkElement feItem = item as FrameworkElement; 
//cast to FrameworkElement, need the Name property
        if (feItem != null)
        {
            if (feItem.Name.Equals(elementName))
            {
                 return true;
            }
        }
     }
     // elementName was not in this stack 
     return false;
}

注釈

戻り値は単一の要素ではなく、コレクションです。 複数の UI 要素を z オーダーで積み重ねることができるため、コレクションには複数の要素を含めることができます。 PointerPressed イベントの送信者値など、入力イベント ハンドラーによって公開される従来のヒット テスト手法は、z オーダーが最も高い最上位要素のみを考慮しています。 FindElementsInHostCoordinates メソッドは、アプリ UI でそのポイントまたは領域を共有する要素のスタック全体を返します。z オーダーの逆数で示されます。 そのため、FindElementsInHostCoordinates を使用すると、要素を意図的または意図せずに積み重ねたケースを調べるのに役立ちます。 レンダリングとヒット テストの順序を修正したり、その順序を他の理由で調べたりすることもできます。

FindElementsInHostCoordinates は、基本的なヒット テスト、特定の要素のフィルター処理を行うヒット テスト、同じポイントでオーバードローしているビジュアル ツリー内の要素があるかどうかを判断する 3 つのシナリオに役立ちます。

基本的なヒット テスト

基本的なヒット テストの目的は、x-y 座標の特定のポイントでアプリ UI の z オーダーで最も高い要素を検出することです。 レンダリングされた UI の最上位を描画する要素であることに加えて、この要素も重要です。これは、ポインター イベントなどのユーザー操作がある場合に報告されるイベント ソースであるためです。 入力イベントが発生する前に最上位の z オーダーに存在する要素を把握し、それを予測し、z オーダー配置の間違いを修正できるテスト シナリオが発生した可能性があります。

このシナリオでは、ヒット テストに関心のあるポイントを intersectingPoint パラメーターの値として渡す必要があります。 サブツリー パラメーターの場合は、null として渡すことができます。 または、 サブツリー をページのルート ビジュアルであることがわかっている要素に指定することも、ヒット テストの最後の停止にする要素を指定することもできます。

z オーダーの最上位にある要素は、常に UIElement 項目の返された IEnumerable の最初の要素です。 そのため、基本的なヒット テストでは、通常、その最初の項目にのみ関心があります。 IEnumerable 内の追加項目は、その時点にあるが、さらに z オーダーに戻り、その最初の項目の下に描画される他の要素です。 さらに戻った要素は、その時点での入力イベントのソースとして自分自身を報告せず、最上位の要素のみが報告されます。

要素フィルターによるヒット テスト

UI の特定のポイントに特定の要素が存在するかどうかを知りたい場合があります。 その場合は、 交差するポイントを 指定し、探している要素を サブツリー パラメーターとして指定できます。 戻り値が空でない場合は、UI のその時点に要素が存在することを意味します。 要素が戻り値の最初の項目である場合は、要素が intersectingPoint の z オーダーの最上位であることを意味します。 戻り値に他の項目があり、 サブツリー が最初でない場合、他の項目は、z オーダーで高い 交差Point でレンダリングされる要素を表します (視覚的には、 サブツリー 要素の上にレンダリングされます)。 その場合、 サブツリー は、返された IEnumerable の最後の要素であり、最初の要素ではありません。

戻り値が空の場合は、 サブツリー 要素が存在しなかったことを意味します(z オーダー値)。

オーバードローを探すか、完全なビジュアル ツリーを見る

UI は動的である可能性があります。特に、UI の作成にデータ バインディングからのコレクションを使用している場合。 そのため、現在どの要素が上位にあるかを知る必要がある場合があります。 ユーザーが対話する可能性があるアプリ内のポイントを予測し、意図した操作が現在可能であることを確認している可能性があります。 このシナリオでは、通常、現在アプリ ウィンドウ内にある有効な座標である (0,0) などの既知のポイントを表す Point 値を指定します。 サブツリー パラメーターの場合は、null として渡すことができます。 または、 サブツリー をページのルート ビジュアルであることがわかっている要素に指定することも、ヒット テストの最後の停止にする要素を指定することもできます。

注意

サブツリーnull を渡すと、Frame 要素や ContentPresenter など、ページ レベルの XAML で定義されていない要素がビジュアル ツリーに含まれていることがあります。 これらは、UWP アプリ用の Microsoft Visual Studio プロジェクト テンプレートのほとんどに存在する一般的なアプリ初期化コードに由来します。これは、最初に FrameWindow.Content 値として作成します。 FindElementsInHostCoordinates メソッドで示されるビジュアル ツリーは、Page ルートなどのサブツリー要素でフィルター処理しない限り、Window.Content まで拡張されます。

戻り値では、内の各項目に関心がある場合があります。 そのため、 foreach または同様の言語固有の手法を使用してコレクションを反復処理し、これらの各要素に対して独自のロジックを実行できます。 そのコレクションの最初の要素は、z オーダーで一番上にある要素です。

C# または Microsoft Visual Basic を使用してプログラミングする場合、このメソッドの戻り値の型は、UIElement 項目を含む IEnumerable ジェネリック コレクションとして投影されます。 Visual C++ コンポーネント拡張機能 (C++/CX) を使用してプログラミングする場合、このメソッドの戻り値の型は IIterable です

こちらもご覧ください

適用対象

FindElementsInHostCoordinates(Rect, UIElement)

アプリ UI の指定された Rect フレーム内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、四角形の領域を共有するビジュアル ツリーのコンポーネントを表し、オーバードローする要素を含む場合があります。

public:
 static IIterable<UIElement ^> ^ FindElementsInHostCoordinates(Rect intersectingRect, UIElement ^ subtree);
/// [Windows.Foundation.Metadata.Overload("FindElementsInHostCoordinatesRect")]
 static IIterable<UIElement> FindElementsInHostCoordinates(Rect const& intersectingRect, UIElement const& subtree);
[Windows.Foundation.Metadata.Overload("FindElementsInHostCoordinatesRect")]
public static IEnumerable<UIElement> FindElementsInHostCoordinates(Rect intersectingRect, UIElement subtree);
function findElementsInHostCoordinates(intersectingRect, subtree)
Public Shared Function FindElementsInHostCoordinates (intersectingRect As Rect, subtree As UIElement) As IEnumerable(Of UIElement)

パラメーター

intersectingRect
Rect

決定領域として使用する Rect 。 このフレームでは、特定の要素ではなく、アプリ ウィンドウの座標空間が使用されます (指定した場合は サブツリー ではありません)。

subtree
UIElement

検索するオブジェクト。 指定した intersectingRect 内に存在する要素のセット全体にサブツリー オブジェクトが存在する場合、戻り値には、そのスペースの上に描画されているサブツリー オブジェクトと要素のみが含まれます。 サブツリー オブジェクトが intersectingRect フレーム内に存在しない場合、戻り値は空になります。

戻り値

指定した Rect フレーム内のビジュアル ツリーコンポジションにある UIElement オブジェクトの列挙可能なセット。

属性

次の XAML UI を指定します。

<Canvas Name="canvas">
  <Rectangle Name="outermost" Fill="Red" Width="200" Height="200"/>
  <Rectangle Canvas.Left="40" Canvas.Top="40" Name="hidden" Fill="Green" Width="120" Height="120"/>
  <Rectangle Canvas.Left="40" Canvas.Top="40" Name="shown" Fill="Orange" Width="120" Height="120"/>
  <Rectangle Canvas.Left="80" Canvas.Top="80" Name="center" Fill="Yellow" Width="40" Height="40"/>
  <Rectangle Canvas.Left="190" Canvas.Top="190" Name="bottomright" Fill="Pink" Width="10" Height="10"/>
</Canvas>

さまざまな サブツリー 値を使用した FindElementsInHostCoordinates の使用法と結果の例を次に示します。

private void Test(object sender, RoutedEventArgs e)
{
    IEnumerable<UIElement> hits;
    hits =  VisualTreeHelper.FindElementsInHostCoordinates(
      new Rect(75,75,50,50), canvas);
    foreach (UIElement element in hits)
    {
        //run logic here, such as log the results 
    }
// results in the following set of elements, listed by Name:
// center - the last declared XAML element is first returned, if within the area
// shown - renders, underneath 'center' in part of the area but visible on the edges
// hidden - entirely under 'shown', not visible but part of the area, an overdraw
// outermost - draws under all the above
// canvas - the 'subtree' value, and the last element reported

    hits = VisualTreeHelper.FindElementsInHostCoordinates(
      new Rect(75,75,50,50), center);
    foreach (UIElement element in hits) {
        //run logic here, such as log the results
    }
// results in only 'center', because it was 'subtree' and it's also topmost

    hits = VisualTreeHelper.FindElementsInHostCoordinates(
      new Rect(75,75,50,50), bottomright);
// results in an empty set, 'bottomright' isn't in the specified rect
}

注釈

戻り値は単一の要素ではなく、コレクションです。 コレクションには複数の要素を含めることができます。これは、複数の UI 要素を z オーダーで積み重ねることができ、 また、交差するRect フレーム内に複数の要素が完全または部分的に積み重ねられる可能性があるためです。 PointerPressed イベントの送信者値など、入力イベント ハンドラーによって公開される従来のヒット テスト手法は、z オーダーが最も高い最上位要素のみを考慮しています。 FindElementsInHostCoordinates メソッドは、アプリ UI 内でそのポイントまたは領域を共有する要素のスタック全体を返します。これは、ビジュアル ツリーの順序で一覧表示されます (通常は XAML 宣言順序の逆と同じです)。 そのため、FindElementsInHostCoordinates を使用すると、要素を意図的または意図せずに積み重ねたケースを調べるのに役立ちます。 レンダリングとヒット テストの順序を修正したり、その順序を他の理由で調べたりすることもできます。

領域に対する FindElementsInHostCoordinates は、特定の要素をフィルター処理する基本的なヒット テストとヒット テストの 2 つのシナリオに役立ちます。

基本的なヒット テスト

基本的なヒット テストの目的は、アプリ UI の z オーダーで最も高い要素を検出することです。 マウス操作のヒット テストを行う場合は、ポイントを使用することもできますが、タッチ指向のヒット テストの場合は、四角形の領域を使用することが適切なことがよくあります。 タッチ イベントが発生する前に、最上位の z オーダーに存在する要素を知りたいテスト シナリオが発生する可能性があります。 または、中心点の近くに何があるか、どの要素が目的のターゲットであるかを確認するために、四角形として展開する点がある場合もあります。

このシナリオでは、ヒット テストに関心のある四角形を intersectingRect パラメーターの値として渡す必要があります。 サブツリー パラメーターの場合は、null として渡すことができます。 または、 サブツリー をページのルート ビジュアルであることがわかっている要素に指定することも、ヒット テストの最後の停止にする要素を指定することもできます。

UIElement 項目の返される IEnumerable 内の要素の順序は、領域内の座標空間と z オーダーの両方を占めます。 そのため、z オーダーが最も高くないため、入力イベントのソースにすることができなかったアイテムに対してヒットを取得できます。 確実に、同じ intersectingRect を使用し、目的の要素を サブツリーとして渡すことで、関心のある返されたリストの項目に対して要素フィルターによるヒット テストを実行できます。

要素フィルターによるヒット テスト

UI の領域内に特定の要素が存在するかどうかを知りたい場合があります。 その場合は、 intersectingRect の領域を指定し、探している要素を サブツリー パラメーターとして指定できます。 戻り値が空でない場合は、 要素がその領域内のどこかに存在することを意味します。 領域をヒット テストする場合、セットには複数の x-y 座標の要素が含まれているため、戻り値セット内の順序は z オーダーを決定する場合ほど役に立ちません。 セットには、さまざまな x-y 座標で描画される要素と、完全または部分的に描画される要素が混在しています。 オーバードローの状況を実際に調べるには、Point を使用する FindElementsInHostCoordinates のオーバーロードを使用して、x-y 座標とビジュアル ツリーの順序が要素ではなくなります。 FindElementsInHostCoordinates(Point,UIElement)を参照してください。

戻り値が空の場合は、 サブツリー 要素がその領域に存在しなかったことを意味します。

C# または Microsoft Visual Basic を使用してプログラミングする場合、このメソッドの戻り値の型は、UIElement 項目を含む IEnumerable ジェネリック コレクションとして投影されます。 Visual C++ コンポーネント拡張機能 (C++/CX) を使用してプログラミングする場合、このメソッドの戻り値の型は IIterable です

こちらもご覧ください

適用対象

FindElementsInHostCoordinates(Point, UIElement, Boolean)

アプリ UI の指定した x-y 座標ポイント内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、そのポイントを共有するビジュアル ツリーのコンポーネントを表します。

public:
 static IIterable<UIElement ^> ^ FindElementsInHostCoordinates(Point intersectingPoint, UIElement ^ subtree, bool includeAllElements);
/// [Windows.Foundation.Metadata.DefaultOverload]
/// [Windows.Foundation.Metadata.Overload("FindAllElementsInHostCoordinatesPoint")]
 static IIterable<UIElement> FindElementsInHostCoordinates(Point const& intersectingPoint, UIElement const& subtree, bool const& includeAllElements);
[Windows.Foundation.Metadata.DefaultOverload]
[Windows.Foundation.Metadata.Overload("FindAllElementsInHostCoordinatesPoint")]
public static IEnumerable<UIElement> FindElementsInHostCoordinates(Point intersectingPoint, UIElement subtree, bool includeAllElements);
function findElementsInHostCoordinates(intersectingPoint, subtree, includeAllElements)
Public Shared Function FindElementsInHostCoordinates (intersectingPoint As Point, subtree As UIElement, includeAllElements As Boolean) As IEnumerable(Of UIElement)

パラメーター

intersectingPoint
Point

決定ポイントとして使用するポイント。 このポイントは、特定の要素ではなく、アプリ ウィンドウの座標空間を使用しています (指定した場合は サブツリー ではありません)。

subtree
UIElement

検索するオブジェクト。 指定した交差するPoint 座標に存在する要素のセット全体にサブツリー オブジェクトが存在する場合、戻り値には、サブツリー オブジェクトと、サブツリーよりも z オーダーが高いオブジェクトのみが含まれます。このオブジェクトは、z オーダーの逆順で一覧表示されます。 サブツリー オブジェクトが交差するPoint 座標に存在しない場合、戻り値は空になります。

includeAllElements
Boolean

bool

true を指定 すると、ヒット テストでは見えないと見なされる要素を含め、交差するすべての要素が含まれます。 false を指定 すると、表示可能なヒット テスト可能な要素のみが検索されます。 既定値は false です。

戻り値

指定したポイントのビジュアル ツリーコンポジション内にあると判断された、列挙可能な UIElement オブジェクトのセット。z オーダーの逆順で一覧表示されます。

属性

次の XAML UI を指定します。

<Canvas Name="canvas">
  <Rectangle Name="outermost" Fill="Red" Width="200" Height="200"/>
  <Rectangle Canvas.Left="40" Canvas.Top="40" Name="hidden" Fill="Green" Width="120" Height="120"/>
  <Rectangle Canvas.Left="40" Canvas.Top="40" Name="shown" Fill="Orange" Width="120" Height="120"/>
  <Rectangle Canvas.Left="80" Canvas.Top="80" Name="center" Fill="Yellow" Width="40" Height="40"/>
  <Rectangle Canvas.Left="190" Canvas.Top="190" Name="bottomright" Fill="Pink" Width="10" Height="10"/>
</Canvas>

さまざまな サブツリー 値を使用した FindElementsInHostCoordinates の使用法と結果の例を次に示します。

private void Test(object sender, RoutedEventArgs e)
{
    IEnumerable<UIElement> hits;
    hits =  VisualTreeHelper.FindElementsInHostCoordinates(
      new Point(100,100), canvas, true);
    foreach (UIElement element in hits)
    {
        //run logic here, such as log the results 
    }
// results in the following set of elements, listed by Name:
// center - the element that is topmost in z-order at 100,100
// shown - also renders at 100,100 but is underneath 'center'
// hidden - is entirely underneath 'shown', 
//   and lower in z-order because 'hidden' declared before 'shown' in XAML
// outermost - draws under all the above at 100,100
// canvas - the 'subtree' value, so that's the last element reported

    hits = VisualTreeHelper.FindElementsInHostCoordinates(
      new Point(100, 100), center, true);
    foreach (UIElement element in hits) {
        //run logic here, such as log the results
    }
// results in 'center', because it is 'subtree' and also topmost

    hits = VisualTreeHelper.FindElementsInHostCoordinates(
      new Point(100, 100), bottomright, true);
// results in an empty set, 'bottomright' doesn't render at 100,100
}

注釈

要素がレイアウト内のスペースを占有し、"インクを生成する" 場合、要素はヒット テスト可能と見なされますBrush を持つ要素の場合、Null 以外の Brush は、Brush が可視ピクセルを生成しない場合でも、インクを生成したものと見なされます。 たとえば、色が Transparent に設定された SolidColorBrush では、インクが引き続き生成されます。 null ブラシのみがインクを生成しません。 Opacity プロパティは考慮されません。 不透明度が 0 の場合でも、要素はインクを生成します。

includeAllElements パラメーターが true に設定されている場合、インクを生成しない要素はヒット テストと見なされます。 この場合、要素が空間要件を満たしている限り (ポイントは要素の境界と交差します)、その要素とその先祖が結果に含まれます。

注意

SwapChainPanelMediaPlayerElement などの一部の特別な要素にはブラシはありませんが、インクを生成することはできます。

こちらもご覧ください

適用対象

FindElementsInHostCoordinates(Rect, UIElement, Boolean)

アプリ UI の指定された Rect フレーム内にあるオブジェクトのセットを取得します。 オブジェクトのセットは、四角形の領域を共有するビジュアル ツリーのコンポーネントを表し、オーバードローする要素を含む場合があります。

public:
 static IIterable<UIElement ^> ^ FindElementsInHostCoordinates(Rect intersectingRect, UIElement ^ subtree, bool includeAllElements);
/// [Windows.Foundation.Metadata.Overload("FindAllElementsInHostCoordinatesRect")]
 static IIterable<UIElement> FindElementsInHostCoordinates(Rect const& intersectingRect, UIElement const& subtree, bool const& includeAllElements);
[Windows.Foundation.Metadata.Overload("FindAllElementsInHostCoordinatesRect")]
public static IEnumerable<UIElement> FindElementsInHostCoordinates(Rect intersectingRect, UIElement subtree, bool includeAllElements);
function findElementsInHostCoordinates(intersectingRect, subtree, includeAllElements)
Public Shared Function FindElementsInHostCoordinates (intersectingRect As Rect, subtree As UIElement, includeAllElements As Boolean) As IEnumerable(Of UIElement)

パラメーター

intersectingRect
Rect

決定領域として使用する修正。 このフレームは、特定の要素ではなく、アプリ ウィンドウの座標空間を使用しています (指定した場合は サブツリー ではありません)。

subtree
UIElement

検索するオブジェクト。 指定した intersectingRect 内に存在する要素のセット全体にサブツリー オブジェクトが存在する場合、戻り値には、その空間の上に描画されるサブツリー オブジェクトと要素のみが含まれます。 サブツリー オブジェクトが intersectingRect フレーム内に存在しない場合、戻り値は空になります。

includeAllElements
Boolean

bool

true を指定 すると、ヒット テストでは見えないと見なされる要素を含め、交差するすべての要素が含まれます。 false を指定 すると、表示可能なヒット テスト可能な要素のみが検索されます。 既定値は false です。

戻り値

指定した Rect フレーム内のビジュアル ツリーコンポジション内にあると判断される、列挙可能な UIElement オブジェクトのセット。

属性

次の XAML UI を指定します。

<Canvas Name="canvas">
  <Rectangle Name="outermost" Fill="Red" Width="200" Height="200"/>
  <Rectangle Canvas.Left="40" Canvas.Top="40" Name="hidden" Fill="Green" Width="120" Height="120"/>
  <Rectangle Canvas.Left="40" Canvas.Top="40" Name="shown" Fill="Orange" Width="120" Height="120"/>
  <Rectangle Canvas.Left="80" Canvas.Top="80" Name="center" Fill="Yellow" Width="40" Height="40"/>
  <Rectangle Canvas.Left="190" Canvas.Top="190" Name="bottomright" Fill="Pink" Width="10" Height="10"/>
</Canvas>

さまざまなサブツリー値を使用した FindElementsInHostCoordinates の使用法と結果の例を次に示します。

private void Test(object sender, RoutedEventArgs e)
{
    IEnumerable<UIElement> hits;
    hits =  VisualTreeHelper.FindElementsInHostCoordinates(
      new Rect(75,75,50,50), canvas, true);
    foreach (UIElement element in hits)
    {
        //run logic here, such as log the results 
    }
// results in the following set of elements, listed by Name:
// center - the last declared XAML element is first returned, if within the area
// shown - renders, underneath 'center' in part of the area but visible on the edges
// hidden - entirely under 'shown', not visible but part of the area, an overdraw
// outermost - draws under all the above
// canvas - the 'subtree' value, and the last element reported

    hits = VisualTreeHelper.FindElementsInHostCoordinates(
      new Rect(75,75,50,50), center, true);
    foreach (UIElement element in hits) {
        //run logic here, such as log the results
    }
// results in only 'center', because it was 'subtree' and it's also topmost

    hits = VisualTreeHelper.FindElementsInHostCoordinates(
      new Rect(75,75,50,50), bottomright, true);
// results in an empty set, 'bottomright' isn't in the specified rect
}

注釈

要素がレイアウト内のスペースを占有し、"インクを生成する" 場合、要素はヒット テスト可能と見なされますBrush を持つ要素の場合、Null 以外の Brush は、Brush が可視ピクセルを生成しない場合でも、インクを生成したものと見なされます。 たとえば、色が Transparent に設定された SolidColorBrush では、インクが引き続き生成されます。 null ブラシのみがインクを生成しません。 Opacity プロパティは考慮されません。 不透明度が 0 の場合でも、要素はインクを生成します。

includeAllElements パラメーターが true に設定されている場合、インクを生成しない要素はヒット テストと見なされます。 この場合、要素が空間要件を満たしている限り (rect は要素の境界と交差します)、その要素とその先祖が結果に含まれます。

注意

SwapChainPanelMediaPlayerElement などの一部の特別な要素にはブラシはありませんが、インクを生成することはできます。

こちらもご覧ください

適用対象