概述
支持多点触控的设备是一个不断发展壮大的市场,但本文中并不论述具体设备。
在操作系统级别上,Windows 7 支持多点触控输入。一部分是通过消息 WM_TOUCH 来支持的。该操作系统已在此级别将多点触控消息提升为鼠标消息。通过这一提升,多点触控用户可以使用触控和笔势来代替鼠标移动或鼠标单击。这在与可能不具触控识别能力、而是通过鼠标事件和消息执行其所有空间输入处理的应用程序进行交互时特别有用。Windows 7 还可在适当时合并这些消息,这样,应用程序不必处理全都生成增量事件的中间消息的溢出。
作为浏览器宿主的 Internet Explorer 版本 8 也是识别多点触控的。Internet Explorer 版本 8 将平台多点触控消息转发到插件(例如在 Internet Explorer 内运行的 Silverlight),这样,Silverlight 应用程序就可与多点触控输入交互。
对于在 Windows 7 上运行的当前版本的 Firefox 宿主中的 Silverlight,以及对于在 Windows 7 上运行的浏览器外应用程序,也支持多点触控。但是,对于在 全屏模式下运行的应用程序,不支持多点触控输入。
注册多点触控
作为多点触控的更广泛的平台体系结构的一部分,每个希望接收多点触控消息的应用程序都必须注册其 HWND(为此,Windows 7 的触控 API 包含 RegisterTouchWindow)。Silverlight 4 运行时负责此注册步骤,并且将 Silverlight 注册为一个运行时和使用 Silverlight 作为运行时的所有应用程序。因此,通常不需要直接与平台代码交互来处理多点触控输入。但是,Windows 7 和 Silverlight 4 的触控 API 内的多点触控交互颇有特点:
-
Silverlight 4 注册原始触控输入,而不注册笔势。如果需要包含笔势,您必须在 Silverlight 的上下文中使用自己的应用程序代码将触摸屏输入处理为笔势。此外,还需要进行更大规模的互操作设计,以便您可以在其中包含一个单独的 HWND,它将从平台进行笔势的多点触控注册,并且与 Silverlight 内容区域进行互操作。
-
通常,Silverlight 4 将原始触摸屏输入提升至鼠标事件。(但是,可以基于每个触控帧禁用提升,在本主题的下面几节中将会说明。)
-
在某个宿主内,浏览器宿主可提升某些笔势,以便成为除 mousedown/mousemove/mouseup 以外的事件。
如果有专门用于多点触控帧及其触控点的处理,鼠标事件提升的确可能实现双重事件。在 Silverlight 多点触控事件处理程序的正文中,可以在主向下触控操作期间挂起鼠标事件提升。例如,如果要创建一个可识别触摸的按钮,该按钮根据触摸特征执行不同的操作,则您可以挂起提升,以使该按钮不提升至通常的“单击”行为,而是根据处理输入的方式进入不同的逻辑。为此,请调用 SuspendMousePromotionUntilTouchUp 作为处理程序最初的操作之一。
鼠标提升的具体特性不在此讨论,因为这是平台特征。一般说来,该机制是消息到消息的提升。
如果要使用笔势比喻处理多点触控,代码中必须处理触控事件并使用 Silverlight 4 下公开的 API 将其处理为笔势,可以使用也可以不使用笔势的平台 API。这一点无关紧要。
转在自:http://www.wpf8.net/html/6301744729.html
转载于:https://www.cnblogs.com/wpf123/archive/2012/03/22/2411992.html
最后
以上就是善良狗为你收集整理的多点触控的全部内容,希望文章能够帮你解决多点触控所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复