VisualTreeHelper.HitTest 方法

定义

返回命中测试的最顶层 Visual 对象。

重载

HitTest(Visual, Point)

通过指定 Point 返回命中测试的最顶层 Visual 对象。

HitTest(Visual3D, HitTestFilterCallback, HitTestResultCallback, HitTestParameters3D)

使用调用方定义的 HitTestFilterCallbackHitTestResultCallback 方法对指定 Visual3D 启动命中测试。

HitTest(Visual, HitTestFilterCallback, HitTestResultCallback, HitTestParameters)

使用调用方定义的 HitTestFilterCallbackHitTestResultCallback 方法对指定 Visual 启动命中测试。

注解

采用 HitTestResultCallbackHitTestFilterCallback 作为参数的重载方法在命中测试期间提供其他功能:

  • 允许你在命中测试期间参与控制可视化树遍历。

  • 允许检索点或几何图形下的所有视觉对象,而不仅仅是最顶部的视觉对象。

HitTest(Visual, Point)

通过指定 Point 返回命中测试的最顶层 Visual 对象。

public:
 static System::Windows::Media::HitTestResult ^ HitTest(System::Windows::Media::Visual ^ reference, System::Windows::Point point);
public static System.Windows.Media.HitTestResult HitTest (System.Windows.Media.Visual reference, System.Windows.Point point);
static member HitTest : System.Windows.Media.Visual * System.Windows.Point -> System.Windows.Media.HitTestResult
Public Shared Function HitTest (reference As Visual, point As Point) As HitTestResult

参数

reference
Visual

要进行命中测试的 Visual

point
Point

要进行命中测试的点值。

返回

HitTestResult

Visual 的命中测试结果,作为 HitTestResult 类型返回。

示例

下面的示例演示如何使用 HitTest 该方法命中测试内部 Canvas的对象。

// Respond to the left mouse button down event by initiating the hit test.
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);

    // Perform the hit test against a given portion of the visual object tree.
    HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt);

    if (result != null)
    {
        // Perform action on hit visual object.
    }
}
' Respond to the left mouse button down event by initiating the hit test.
Private Overloads Sub OnMouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
    ' Retrieve the coordinate of the mouse position.
    Dim pt As Point = e.GetPosition(CType(sender, UIElement))

    ' Perform the hit test against a given portion of the visual object tree.
    Dim result As HitTestResult = VisualTreeHelper.HitTest(myCanvas, pt)

    If result IsNot Nothing Then
        ' Perform action on hit visual object.
    End If
End Sub

注解

VisualHit返回值的属性表示Visual被命中的对象。

备注

命中测试可以在 2D 可视化树中启动, RayHitTestResult这是 3D 命中测试结果对象。 在 2D 可视化树中启动的命中测试无缝扩展到任何定义的 3D 可视化树中。

另请参阅

适用于

HitTest(Visual3D, HitTestFilterCallback, HitTestResultCallback, HitTestParameters3D)

使用调用方定义的 HitTestFilterCallbackHitTestResultCallback 方法对指定 Visual3D 启动命中测试。

public:
 static void HitTest(System::Windows::Media::Media3D::Visual3D ^ reference, System::Windows::Media::HitTestFilterCallback ^ filterCallback, System::Windows::Media::HitTestResultCallback ^ resultCallback, System::Windows::Media::Media3D::HitTestParameters3D ^ hitTestParameters);
public static void HitTest (System.Windows.Media.Media3D.Visual3D reference, System.Windows.Media.HitTestFilterCallback filterCallback, System.Windows.Media.HitTestResultCallback resultCallback, System.Windows.Media.Media3D.HitTestParameters3D hitTestParameters);
static member HitTest : System.Windows.Media.Media3D.Visual3D * System.Windows.Media.HitTestFilterCallback * System.Windows.Media.HitTestResultCallback * System.Windows.Media.Media3D.HitTestParameters3D -> unit
Public Shared Sub HitTest (reference As Visual3D, filterCallback As HitTestFilterCallback, resultCallback As HitTestResultCallback, hitTestParameters As HitTestParameters3D)

参数

reference
Visual3D

要进行命中测试的 Visual3D

filterCallback
HitTestFilterCallback

表示命中测试筛选回调值的方法。

resultCallback
HitTestResultCallback

表示命中测试结果回调值的方法。

hitTestParameters
HitTestParameters3D

要对其执行命中测试的 3D 参数值。

注解

参数 filterCallback 可以是 null,在这种情况下,它将被忽略。 如果 filterCallback 不是 null,则会在之前 resultCallback调用它。 resultCallback 不能为 null

备注

命中测试可以在 2D 可视化树中启动, RayHitTestResult这是 3D 命中测试结果对象。 在 2D 可视化树中启动的命中测试无缝扩展到任何定义的 3D 可视化树中。

适用于

HitTest(Visual, HitTestFilterCallback, HitTestResultCallback, HitTestParameters)

使用调用方定义的 HitTestFilterCallbackHitTestResultCallback 方法对指定 Visual 启动命中测试。

public:
 static void HitTest(System::Windows::Media::Visual ^ reference, System::Windows::Media::HitTestFilterCallback ^ filterCallback, System::Windows::Media::HitTestResultCallback ^ resultCallback, System::Windows::Media::HitTestParameters ^ hitTestParameters);
public static void HitTest (System.Windows.Media.Visual reference, System.Windows.Media.HitTestFilterCallback filterCallback, System.Windows.Media.HitTestResultCallback resultCallback, System.Windows.Media.HitTestParameters hitTestParameters);
static member HitTest : System.Windows.Media.Visual * System.Windows.Media.HitTestFilterCallback * System.Windows.Media.HitTestResultCallback * System.Windows.Media.HitTestParameters -> unit
Public Shared Sub HitTest (reference As Visual, filterCallback As HitTestFilterCallback, resultCallback As HitTestResultCallback, hitTestParameters As HitTestParameters)

参数

reference
Visual

要进行命中测试的 Visual

filterCallback
HitTestFilterCallback

表示命中测试筛选回调值的方法。

resultCallback
HitTestResultCallback

表示命中测试结果回调值的方法。

hitTestParameters
HitTestParameters

要对其执行命中测试的参数值。

示例

下面的示例演示如何使用 HitTest 该方法命中测试内部 Canvas的对象。

// Respond to the right mouse button down event by setting up a hit test results callback.
private void OnMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);

    // Clear the contents of the list used for hit test results.
    hitResultsList.Clear();

    // Set up a callback to receive the hit test result enumeration.
    VisualTreeHelper.HitTest(myCanvas, null,
        new HitTestResultCallback(MyHitTestResult),
        new PointHitTestParameters(pt));

    // Perform actions on the hit test results list.
    if (hitResultsList.Count > 0)
    {
        Console.WriteLine("Number of Visuals Hit: " + hitResultsList.Count);
    }
}
' Respond to the right mouse button down event by setting up a hit test results callback.
Private Overloads Sub OnMouseRightButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
    ' Retrieve the coordinate of the mouse position.
    Dim pt As Point = e.GetPosition(CType(sender, UIElement))

    ' Clear the contents of the list used for hit test results.
    hitResultsList.Clear()

    ' Set up a callback to receive the hit test result enumeration.
    VisualTreeHelper.HitTest(myCanvas, Nothing, New HitTestResultCallback(AddressOf MyHitTestResult), New PointHitTestParameters(pt))

    ' Perform actions on the hit test results list.
    If hitResultsList.Count > 0 Then
        Console.WriteLine("Number of Visuals Hit: " & hitResultsList.Count)
    End If
End Sub
// Return the result of the hit test to the callback.
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
    // Add the hit test result to the list that will be processed after the enumeration.
    hitResultsList.Add(result.VisualHit);

    // Set the behavior to return visuals at all z-order levels.
    return HitTestResultBehavior.Continue;
}
' Return the result of the hit test to the callback.
Public Function MyHitTestResult(ByVal result As HitTestResult) As HitTestResultBehavior
    ' Add the hit test result to the list that will be processed after the enumeration.
    hitResultsList.Add(result.VisualHit)

    ' Set the behavior to return visuals at all z-order levels.
    Return HitTestResultBehavior.Continue
End Function

注解

参数 filterCallback 可以是 null,在这种情况下,它将被忽略。 如果 filterCallback 不是 null,则会在之前 resultCallback调用它。 resultCallback 不能为 null

备注

命中测试可以在 2D 可视化树中启动, RayHitTestResult这是 3D 命中测试结果对象。 在 2D 可视化树中启动的命中测试无缝扩展到任何定义的 3D 可视化树中。

另请参阅

适用于