多点触控

点触控输入是一种输入类型,它依赖于触摸屏输入概念,还可能依赖多种触控及其被解释为单元(有时也称为帧)的特征。多点触控输入需要有对触控敏感的硬件设备,以及支持将触控事件向各应用程序公开所需基础结构的环境。
多点触控硬件

多点触控这一概念需要能够记录表面上所产生触压的硬件设备。该表面可以直接是屏幕(如 Tablet PC 设备),也可以是单独的专用输入设备(如绘图板)。其中,Tablet PC 设备或类似的显示屏直接对触控敏感的设备通常与 Silverlight 关联最大。
平台要求

多点触控需要有能够将触摸屏输入传播到某一个应用程序(如基于 Silverlight 的应用程序)的环境(设备;平台和操作系统;诸如浏览器之类的宿主应用程序)。

支持多点触控的设备是一个不断发展壮大的市场,但本文中并不论述具体设备。

在操作系统级别上,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 以外的事件。

提升至 鼠标事件

通过鼠标事件提升,多点触控用户可以使用触控和笔势来代替鼠标移动或鼠标单击。从概念上说这是默认的,因为先前的应用程序或不考虑多点触控的应用程序不知道要调用哪个 API 来执行该提升,所以在大多数情况下由平台来执行鼠标提升。出于大部分都相同的原因,Silverlight 4 保留了鼠标事件提升的一般概念。任何给定的现有 Silverlight 控件都可能具有鼠标事件的处理程序,但不是专门用于多点触控事件的。例如,当用户使用多点触控设备与按钮交互时,按钮的预期行为与鼠标单击时的相同。

如果有专门用于多点触控帧及其触控点的处理,鼠标事件提升的确可能实现双重事件。在 Silverlight 多点触控事件处理程序的正文中,可以在主向下触控操作期间挂起鼠标事件提升。例如,如果要创建一个可识别触摸的按钮,该按钮根据触摸特征执行不同的操作,则您可以挂起提升,以使该按钮不提升至通常的“单击”行为,而是根据处理输入的方式进入不同的逻辑。为此,请调用 SuspendMousePromotionUntilTouchUp 作为处理程序最初的操作之一。

鼠标提升的具体特性不在此讨论,因为这是平台特征。一般说来,该机制是消息到消息的提升。

将触控处理为笔势

Silverlight 在原始消息级别上处理多点触控消息,类似于平台 WM_TOUCH,它还在该原始级别上处理对可捕获触控点特征的其他 API 的访问,并将这些 API 作为 Silverlight API 公开。Silverlight 本身不会将触控处理为笔势,请使用平台功能实现该效果,或者处理 WM_GESTURE。(处理 WM_GESTURE 需要处于平台注册状态,而 Silverlight 4 不会自动选择该状态。)

如果要使用笔势比喻处理多点触控,代码中必须处理触控事件并使用 Silverlight 4 下公开的 API 将其处理为笔势,可以使用也可以不使用笔势的平台 API。这一点无关紧要。

转在自:http://www.wpf8.net/html/6301744729.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值