引用MSDN对于命中测试(点击测试)的概述

本文介绍WPF中VisualTreeHelper类的HitTest方法,用于确定点坐标是否位于给定对象的呈现内容内。支持针对点或几何图形下的所有对象执行命中测试,并可根据需要设置命中测试的范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   解释:VisualTreeHelper 类中的 HitTest 方法的用途是确定几何图形或点坐标值是否位于给定对象(如控件或图形元素)的呈现内容内。例如,您可以使用命中测试来确定鼠标在对象边框中的单击点是否位于圆形几何图形内。您还可以选择重写对命中测试的默认实现来执行您自己的自定义命中测试计算。

  

   Windows Presentation Foundation (WPF) 可视化层支持针对点或几何图形下的所有对象执行命中测试,而不仅仅是最顶层对象。结果以 Z 顺序返回。但是,作为 HitTest 方法的参数传递的可视化对象确定要对可视化树的哪个部分执行命中测试。您可以对整个可视化树执行命中测试,也可以对其任何部分执行命中测试。

在下图中,圆对象位于正方形对象和三角形对象之上。如果您只希望对其 Z 顺序值为最顶层的可视化对象执行命中测试,则可以设置可视化命中测试枚举,使其在第一个项之后从 HitTestResultCallback 返回 Stop 以停止命中测试遍历。

可视化树的 Z 顺序的关系图


可视化树的 z 顺序示意图

如果您希望枚举特定点或几何图形下的所有可视化对象,请从 HitTestResultCallback 返回 Continue这意味着您可以对某一对象之下的其他可视化对象执行命中测试,即使它们完全被遮盖也是如此。有关更多信息,请参见“使用命中测试结果回调”部分中的代码示例。

    通过使用 HitTest 方法指定要进行命中测试的可视化对象和点坐标值,可以确定某个点是否处于可视化对象的几何图形之内。可视化对象参数标识可视化树中命中测试搜索的起始点。如果在可视化树中找到其几何图形包含此坐标的可视化对象,则将该对象设置为 HitTestResult 对象的 VisualHit 属性。然后从 HitTest 方法返回 HitTestResult如果要执行命中测试的可视化子树中不包含该点,则 HitTest 返回 null

// 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.
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值