如何检测uwp中某个点下的控件

2024-06-27

我的应用程序中的画布上布置了一系列控件。我正在以编程方式在画布上生成一个点。我希望检测画布的子元素是否与该点相交。

我期望有一个命中测试 API 可用(wpf 曾经有一个可用的接口),但看起来所有交互似乎都是通过输入和触摸事件进行的,这使得我自己执行查询变得困难。 我很可能在搜索中错过了这个功能,有人知道如何实现这样的功能吗?


您可以使用Windows.UI.Xaml.Media.VisualTreeHelper https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.visualtreehelper.aspx.在主机坐标中查找元素 https://msdn.microsoft.com/en-us/library/windows/apps/br243040.aspx查找与特定坐标相交的 UIElements。

要找到相对于 Canvas 的点,您需要将 Canvas 的坐标转换为应用程序窗口的坐标,您可以使用 UIElement 来完成此操作。转换为视觉 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.transformtovisual.aspx。这将考虑缩放和翻译

// myCanvas is the canvas you're hittesting on
// generatedPoint is the Point you're trying to hittest
// page is the app window's root visual

// Get a transform from the Canvas' coordinates to the Page
GeneralTransform gt = myCanvas.TransformToVisual(page);

// Use that to convert the generated Point into the page's coords
Point pagePoint = gt.TransformPoint(generatedPoint);

// and get the elements in the canvas at that point
var elements = VisualTreeHelper.FindElementsInHostCoordinates(pagePoint,myCanvas);

// elements contains the UIElements at generatedPoint (including myCanvas)

The 在主机坐标中查找元素 https://msdn.microsoft.com/en-us/library/windows/apps/br243040.aspx文档更详细地介绍了命中测试场景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测uwp中某个点下的控件 的相关文章

  • 如何在不缓冲的情况下从 WCF 流式传输响应?

    我有一个宁静的 webHttpBinding 自托管WCF服务 大多数方法都会向客户端返回 xml 或 json 版本的对象 我有几个触发长时间运行的方法的 GET 方法 我想将日志响应流式传输到浏览器 或应用程序 以便用户知道发生了什么
  • ~ C 中的运算符

    该程序的输出是 13 我从来没有完全理解 C 中的 运算符 为什么它给出 13 作为输出 如何将 运算符限制为数字的 4 位 include
  • 实体框架 - 将枚举的 ICollection 保存在数据库中

    我有一个具有 type 属性的类ICollection
  • 有关堆栈大小的警告消息

    I use Visual Studio 2010 with Code Analysis活性 在我的代码中 有一行在函数中分配一些内存 TCHAR someString 40000 代码分析抛出警告信息 警告 C6262 函数使用 40000
  • 将 .net 上的 AWS 开发工具包与 localstack 结合使用(TransferUtility/S3 - 设置端点)

    我有本地堆栈 https github com localstack localstack https github com localstack localstack 正在运行 并且能够使用 aws s3 cli 将文件上传到其中 我想要
  • 异步方法调用和模拟

    为什么模拟用户上下文仅在异步方法调用之前可用 我编写了一些代码 实际上基于 Web API 来检查模拟用户上下文的行为 async Task
  • 从 ASP.NET 插入到 MS Access

    我们正在尝试建立一个专门用于内联网的服务台票务系统 决定使用 Visual Studio 2008 Express 的 ASP NET C 如果需要的话 我们有一个完整版本 没什么花哨的 几页抓取 NTLM 信息 系统信息并将其与问题一起存
  • 如何将字典中从一个键到下一个键的所有值相加? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个字典 其中 DateTime Now Date 转换为字符串作为键 整数作为值 我需要以某种方式将从一个输入键到下一个键的所有
  • 可以取消链接以读写方式打开的文件

    在我的程序 在 Mac OS X 上 中 我使用以下代码打开该文件 int fd fd open filename O RDWR 删除文件的程序如下 unlink filename 就我而言 我有相同的文件被打开和删除 我观察到以下情况 打
  • 创建新文件夹的“Shell 命名空间”方式是什么?

    显然 这对于 win32 api CreateDirectory 来说是微不足道的 但我正在尝试托管一个 IShellView 并且希望以最面向 shell 的方式来做到这一点 我本以为 IShellFolder 中会有一个 createo
  • 如何在Linux上正确设置串行通信

    我正在尝试从 FPGA 板读取数据以及向 FPGA 板写入数据 该板本身附带一个驱动程序 每当板插入时 该驱动程序都会创建一个名为 ttyUSB0 的终端设备 在 FPGA 上 实现了异步接收器和发送器 并且它们似乎可以工作 然而 C 方面
  • C 中的 const 和指针

    将 const 与指针一起使用可能会导致指针对象无法通过使用相关指针取消引用来修改 但为什么我也不能修改指针不直接指向的内容呢 例如 int a 3 const int ptr a ptr 5 不会编译 但为什么 ptr 2 5 还编译不了
  • 在所有 DataTable 列中查找字符串

    我正在尝试找到一种快速方法来在所有数据表列中查找字符串 跟随不起作用 因为我想在所有列值中搜索 string str whatever foreach DataRow row in dataTable Rows foreach DataCo
  • C# CsvHelper.ValidationException - 为什么?

    我正在尝试在 C 控制台应用程序中使用 CSVHelper 我有一个例外 CsvHelper ValidationException 标头匹配 Numer Dokumentu 未找到索引 0 处的名称 我不知道为什么 因为这个标题位于 cs
  • 如何检测任务栏上的右键单击

    我有一个 C 语言的 Windows 窗体应用程序 它以加载对话框开始 正如预期的那样 该应用程序的按钮会显示在 Windows 任务栏中 我想检测可能对该按钮进行的 右键单击 最终 我希望禁用右键单击或只是让加载对话框重新获得焦点 我看到
  • 嵌入式控制台日志优化

    不久前我曾发过一篇文章this https stackoverflow com questions 25204389 how to get unique values at preprocessing across files关于SO的问题
  • C#:迭代数据表:Rows、Select() 或 AsEnumerable()

    foreach DataRow row in myDataTable Select foreach DataRow row in myDataTable AsEnumerable foreach DataRow row in myDataT
  • C# 泛型方法,new() 构造函数约束中的类型参数

    有没有办法创建一个使用的通用方法new 要求类具有特定类型的构造函数属性的约束 例如 我有以下代码 public T MyGenericMethod
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线
  • HTTPS文件下载C#

    我需要下载隐藏在 HTTPS 连接后面的文件 我对下载安全网站后面的文件不熟悉 我尝试使用凭据来解决此问题 但无济于事 据我所知 您需要创建并使用证书来完成此操作 但我没有找到任何示例 任何帮助表示赞赏 这就是我现在所拥有的 WebClie

随机推荐