手指之舞 – 探讨Silverlight中的多点触控支持

每次去纽约的美国自然历史博物馆,我必定会好好参观一下灵长类馆。灵长类馆选择了大量的骨骼和剥制标本,展示了一幅灵长类动物进化的全景,动物从极小的树鼩、狐猴和绒猴一直到黑猩猩、大猩猩和人类。

这个展览最引人注目的是所有灵长类动物都有着惊人的共性:手的骨骼结构相同,包括一个对生拇指。这种使我们的祖先和远亲可以抓握从而爬上树枝的相同关节排列和数目,让我们的物种可以影响周围的世界和从事建造工作。我们的双手可能源于数百万年前小型灵长类动物的爪子,而双手也是使我们真正成为人类的重要因素。

我们会本能地伸出手指指点甚至触摸计算机屏幕上的显示内容,又有什么奇怪呢?

为了满足人类希望使手指与计算机更密切相融的愿望,我们的输入设备也一直在不断发展。鼠标对于选择和拖动操作游刃有余,但对于形态自由的素描和手写操作却无法胜任。我们可以用 Tablet 笔针流畅书写,但在拉伸或移动时却倍感困难。我们从 ATM 和博物馆售票处熟悉了触摸屏,但通常仅限于简单的点和按操作。

我认为称为“多点触控”的这项技术代表了一个巨大的飞跃。顾名思义,多点触控可以检测到多个手指,超越了过去的触摸屏概念,在通过屏幕可传达的移动和手势类型方面,产生了巨大差异。多点触控已经从过去的触摸式输入设备发展到一个新阶段,但同时,在本质上这是与以前不同的输入模式。

多点触控最明显的应用可能是在电视新闻节目中,大屏幕上显示一些地图供其气象预报员或专家操作。Microsoft 已在几个方面研究多点触控(从咖啡桌大小的 Microsoft Surface 计算机到 Zune HD 之类的小型设备),并且这项技术已完全成为智能手机上的标准。

尽管 Microsoft Surface 可同时响应多个手指(甚至包括数台内部照相机来查看玻璃上放置的物体),其他大多数多点触控设备仅限于离散的数。许多设备只能响应两个手指(即所谓的触摸点)。(我将把手指和触摸点作为同义词汇使用。)但协作效应发挥着作用:在计算机屏幕上,两个手指的作用大于一个手指的两倍作用。

两个触摸点的限制是多点触控显示器的特征,这种显示器最近已经可用于桌面 PC 和便携式计算机,以及去年 11 月在 Microsoft 专业开发人员会议 (PDC) 上向与会者发布的定制 Acer Aspire 1420P 便携式计算机(通常称为 PDC 便携式计算机)。PDC 便携式计算机的发布为成千上万的开发人员提供了一个难得的机会来编写多点触控感知应用程序。

我以前使用 PDC 便携式计算机探索 Silverlight 3 下的多点触控支持。

Silverlight 事件和类

多点触控支持正成为各种 Windows API 和框架中的标准。这种支持已内置到 Windows 7 和即将发布的 Windows Presentation Foundation (WPF) 4 中。(Microsoft Surface 计算机也基于 WPF,但包括了一些自定义扩展以实现其非常特殊的一些功能。)

在本文中,我准备重点介绍 Silverlight 3 中的多点触控支持。该支持稍有不足,但肯定已经够用,在探讨基本的多点触控概念时非常有用。

如果您将一个多点触控 Silverlight 应用程序发布到您的网站,谁能够使用它?用户将需要一个多点触控显示器,当然还需要在支持多点触控的操作系统和浏览器下运行 Silverlight 应用程序。目前,在 Windows 7 下运行的 Internet Explorer 8 提供这种支持,将来可能会有更多的操作系统和浏览器支持多点触控。

Silverlight 3 对多点触控的支持由 5 个类、1 个委派、1 个枚举和 1 个单一事件组成。您的 Silverlight 程序是否在多点触控设备上运行,如果是,该设备支持多少个触摸点,这些是无法确定的。

一个需要响应多点触控的 Silverlight 应用程序必须将一个处理程序连接到静态 Touch.FrameReported 事件:

Touch.FrameReported += OnTouchFrameReported;

您可以在未配备多点触控显示器的计算机上连接此事件处理程序,而不会出现问题。FrameReported 事件是静态 Touch 类的唯一公共成员。处理程序如下所示:

void OnTouchFrameReported(
  object sender, TouchFrameEventArgs args) {
  ...
}

您可以在应用程序中安装多个 Touch.FrameReported 事件处理程序,所有这些事件处理程序都会报告应用程序中任何位置的所有触控事件。

TouchFrameEventArgs 有一个名为 TimeStamp 的公共属性(我还没有机会使用)和三个重要的公共方法:

TouchPoint GetPrimaryTouchPoint(UIElement relativeTo)

TouchPointCollection GetTouchPoints(UIElement relativeTo)

void SuspendMousePromotionUntilTouchUp()

GetPrimaryTouchPoint 或 GetTouchPoints 的参数仅用于报告 TouchPoint 对象的位置信息。您可以将空值用于此参数,位置信息相对于整个 Silverlight 应用程序的左上角。

时间: 2025-01-10 19:09:23

手指之舞 – 探讨Silverlight中的多点触控支持的相关文章

UI前沿技术-WPF中的多点触控操作事件

就在过去几年,多点触控还只是科幻电影中表现未来主义的一种重要手法,现在俨然已经成为主流的用户界面技术.多点触控显示屏现在成了新型智能手机和 Tablet 计算机的标准显示屏.此外,它还可能在公共场所的计算机上普及,例如 Microsoft Surface 率先开发的网亭或桌面计算机. 实际存在的唯一不确定因素是多点触控在常规台式计算机上的普及.这种普及的最大障碍或许是长时间在垂直屏幕上移动手指所产生的疲劳(称为"大猩猩手臂").我个人希望多点触控的强大功能将切实推进桌面显示屏的重新设计

MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电影中表现未来主义的一种重要手法,现在俨然已经成为主流的用户界面技术. 多点触控显示屏现在成了新型智能手机和 Tablet 计算机的标准显示屏. 此外,它还可能在公共场所的计算机上普及,例如 Microsoft Surface 率先开发的网亭或桌面计算机. 实际存在的唯一不确定因素是多点触控在常规台式

ontouchevent-如何关闭在一个应用中的多点触控

问题描述 如何关闭在一个应用中的多点触控 我希望在这个应用中只支持单点触控,或者说屏蔽第二点及以上的触点.因为我的这个应用开发完成后出现一个问题,就是当前界面中同时点击多个控件都会响应.考虑过使用OnTouchEvent这个方法,可是又发现,那样的话,我需要把所有的控件都添加监听.这个工程量很大啊.有没有更好的方法呢?希望大家给指条明路......

Silverlight多点触控(MultiTouch)

多点触控输入是一种输入类型,它依赖于触摸屏输入概念,还可能依赖多种触控及其被解释为单元(有时也称为帧)的特征.多点触控输入需要有对触控敏感的硬件,以及支持将触控事件向各应用程序公开所需基础结构的环境.本主题讨论 Silverlight 中对多点触控的支持,并介绍几个关键概念. 多点触控硬件 多点触控这一概念需要能够记录表面上所产生触压的硬件.该表面可以直接是屏幕(如 Tablet PC 设备),也可以是单独的专用输入设备(如绘图板).其中,Tablet PC 设备或 类似的显示屏直接对触控敏感的

多点触摸-IE中多点触控如何禁止

问题描述 IE中多点触控如何禁止 现在有一台PC,硬件支持多点触控.安装win7 操作系统.现在安装了一个应用程序,控制层用vc++开发,页面部分用的是html和vb开发.应用程序启动时,浏览器会启动显示.现在希望在IE浏览器中禁止多点触控操作.其他应用程序中都依旧支持触控操作.具体需要做哪些处理呢?各路大神请不吝赐教~ 解决方案 这个最后暂定处理方式:win7 ie支持的四种触摸动作为:ontouchstart ontouchmove ontouchend ontouchcancel 用js实

传苹果要求Google不得使用多点触控技术

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 北京时间2月10日消息,据科技博客VentureBeat报道,日前有Google Android团队成员表示,苹果要求Google不在Android系统中使用多点触控技术,而Google对此表示同意. 首款Android手机HTC G1的触摸屏中并未使用多点触控技术,这引发了用户的不满和疑问.多点触控使用户可同时用多个手指操作触摸屏,支持各种

与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控

原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控 [索引页][源码下载] 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控 作者:webabcd 介绍与众不同 windows phone 7.5 (

WP8中多点触控,浏览图片的时候,如何控制图片在拖动过程中不被拖出屏幕?

问题描述 WP8中多点触控,浏览图片的时候,如何控制图片在拖动过程中不被拖出屏幕? 如果!我现在在多点触控的时候,放大缩小实现了,但放大后拖动图片,会将图片拖出屏幕,这是我做的一个DEMO, 地址如下:https://onedrive.live.com/redir?resid=56C8C9A332A136A7!287&authkey=!AL5pu2Nvxx66dGc&ithint=file%2c.rar可以下载此demo下来看下,在此demo基础下修改,或者有现成的控制例子也可以,实在是想

Android中多点触控以及手势的基础知识

现在一般的android手机都会使用电容触摸屏,所以基本上都会支持多点触控,同样在android系统中应用程序可以使用多点触控的事件来完成各种手势和场景需求,下面简单讲一下如何使用多点触控: 1.相关接口和事件介绍 MotionEvent.getAction() 对于单点触控,我们由MotionEvent.getAction()就可以得到以下几种事件:ACTION_DOWN.ACTION_UP等 MotionEvent.ACTION_MASK 而对于多点触控,我们需要由MotionEvent.g