在Silverlight支持触摸
这篇文章是MSDN的文章修改为Windows Phone支持 多点触控输入与手势 ,对Silverlight的支持触摸作为一个快速的概述,并为自己的参考。
概观
下面的类图显示为Silverlight支持触摸的关键类:
- 触摸
- 触摸事件是异步的。
- 触摸事件总是通过应用程序级触摸发射。 FrameReported事件。
- 由于触摸事件是全球性的,他们是直接的,有没有必要为触摸捕获。
- 是支持多点触控。
- 操纵
- 操纵事件暴露的UIElement。 它们的路由事件。
- 操作事件总是激发,IsManipulationEnabled财产不被支持。
- 操作事件是同步的。
- 只有翻译和扩展支持,不旋转。
- 不支持并发的多个操作。
- 手势是不直接支持。 它是由新华社 和 Silverlight 的Windows Phone工具包的支持。
- 控制:Windows Phone 7上,ScrollViewer的支持全景一抖,按钮支持选项卡。
Silverlight 3中
平台要求
多点触摸需要的环境(设备平台和操作系统;托管的应用程序,如浏览器),可以传播一个单独的应用,如基于Silverlight的应用程序,触摸输入。
在操作系统级别上,Windows 7支持多点触控输入。 这是支持部分,通过消息( 条WM_TOUCH )。 已经在这个级别,操作系统提供了多点触控消息的推动鼠标消息。 推广是目前这样的多点触控用户可以使用触摸和手势来代替鼠标移动或点击鼠标。 这是非常有用的应用程序,可能无法触摸感知交互时,应用程序通过鼠标事件和消息的所有空间的输入处理。 Windows 7中也连接的消息,在适当的时候,让应用程序不必处理中间的所有邮件产生的增量事件的溢出。
版本的Internet Explorer 8浏览器主机也知道多点触控。 版本的Internet Explorer 8前锋平台的多点触控消息如Silverlight插件在Internet Explorer中运行,例如Silverlight应用程序可以与多点触控输入。
Silverlight的多点触控输入(显示IE8的主机)

触控也为Silverlight支持当前版本的Windows 7上运行的火狐主机,浏览器在Windows 7上运行的应用程序。 然而,不支持多点触控输入应用程序在运行全屏模式。
注册为多点触控
为多点触控更广阔的平台架构的一部分,要接收触控消息的每个应用程序必须注册其HWND(Windows 7的触摸API包含为此RegisterTouchWindow的)。 在Silverlight 4运行时间照顾这个注册步骤,注册为一个运行的所有应用程序运行时使用的Silverlight Silverlight的。 因此,它不是一般的必要交互平台的代码直接处理多点触控输入。 然而,Windows 7和Silverlight 4中的多点触控的多点触摸在触摸API交互的特点是相当具体:
Silverlight 4中注册为原料的触摸输入,没有手势。 如果你的要求,包括手势,你必须加工成内的Silverlight的情况下使用自己的应用程序代码,手势触摸输入。 另外,您可能需要一个更大的互操作的设计,使您可以包括一个单独的HWND,是多点触控的手势从平台注册,与Silverlight内容区域互操作。
在一般情况下,Silverlight 4中促进原材料触摸输入,鼠标事件。 (然而,每-touchframe基础上,你可以禁用的推广,为在即将到来的节本主题描述。)
一台主机内,某些手势可能会推动浏览器的主机,成为比其他的mousedown /的MouseMove /的mouseup事件。
晋升为鼠标事件
促进鼠标事件的存在,所以,多点触摸用户可以使用触摸和手势来代替鼠标移动或点击鼠标。 从概念上讲,这是默认的,因为早或不考虑多点触控的应用程序,不知道什么API调用来进行推广,并因此该平台确实在大多数情况下鼠标推广。 Silverlight 4中延续多同样的原因,一般的鼠标事件推广的概念。 任何给定的现有Silverlight控件可能有鼠标事件的处理程序,而不是专门为触控事件。 例如,一个按钮,将有望充当如果点击,当用户使用多点触控设备与它交互。
鼠标事件的推广确实有二元事件是故意处理多点触控框架和它的接触点的情况下,有潜力。 为Silverlight触控事件的处理程序的身体内,你可以暂停持续下降的主要触摸鼠标事件推广。 例如,如果你想创建一个按钮触摸感知触摸特性的基础上,执行不同的动作,你可以暂停推广,使你的按钮没有促进惯用的“点击”行为,而不是去你的离散逻辑如何处理输入。 要做到这一点,呼吁SuspendMousePromotionUntilTouchUp您的处理程序的第一个行动之一。
鼠标推广的确切性质不记录在这里,因为它是一个平台的特点。 一般而言,该机制是一个消息到消息的推动。
触摸手势
Silverlight的触控消息,在原始信息的水平,类似平台的WM_TOUCH,处理一起访问其他API,它可以捕获在接触点的特点,原始的水平,因为Silverlight的API,然后暴露。 Silverlight的本身并不处理触摸手势,使用该平台的功能,效果,或过程WM_GESTURE 。 (处理WM_GESTURE需要与平台Silverlight 4中不选择进入登记状态。)
如果你要处理的多点触控手势比喻,您的代码必须处理触摸事件和使用或不使用手势平台API,使用手势在Silverlight 4中公开的API和过程。 这是不平凡的。
触摸的API
之间的多点触控输入和其他输入(鼠标,键盘,手写笔)在Silverlight技术支持的一个重要的区别是,你注册一个应用广泛的基础上的多点触控事件,处理程序添加特定输入元素( UIElement的对象)。 Silverlight是作为一个整体平台注册的“应用程序”的比喻,这是一致的。
分配一个多点触控事件处理程序,你分配一个静态事件的处理程序Touch.FrameReported 。 System.Windows.Input.Touch是专为这个目的Touch.FrameReported作为其唯一的API存在一个静态服务 类。
你写Touch.FrameReported的处理程序是基于上TouchFrameEventHandler委托。
在一个典型的用户界面设计,您可能有UI的地区,你打算支持特定的多点触控的行动范围内,与其他地区,这将是更好地使用鼠标推广和不一定处理为多点触控输入。 以确定的主要接触点是,您可能必须评估对您的多点触控感知元素的位置,其边界的整体坐标。 GetPrimaryTouchPoint看到更多的信息和示例代码。
如前所述,您可能要暂停的一部分作为您的鼠标事件促进TouchFrameEventHandler逻辑。 要做到这一点,调用SuspendMousePromotionUntilTouchUp作为第一行动之一。
报告Silverlight 4中的触控消息通常相结合的框架,其中一个主“向下”接触点开始。 有时你只在第一接触点和第一个“涨”感兴趣,但框架可能包含其他的接触点和“搬家”行动。 在您的处理程序的框架来访问充分收集点,请致电GetTouchPoints 。 对于一个给定的接触点,可能是最重要的信息是它的位置 。
其他API的公开信息,在这个平台上的API会发现在TOUCHINPUT结构。 这种API的例子是: TouchFrameEventArgs.Timestamp ; TouchDevice.DirectlyOver ; TouchPoint.Size ; TouchPoint.TouchDevice 。 根据您的情况,你可能并不总是需要这样的信息化水平。
操作API在Silverlight版本4
在Silverlight 4 UIElement类的操作,以及事件支持类,如有关的几个事件ManipulationStartedEventArgs 。 然而,这些API和相关的操作概念都没有在Silverlight 4中,在运行时全力支持。 处理这些事件,应用程序必须被定位为Windows Phone的Silverlight。 在Silverlight 4集,以提供设计器支持常见的Windows Phone的Silverlight 4和Silverlight都存在的事件。
Silverlight的Windows电话7
在Silverlight框架手势支持
对于一个完整列表支持的Windows手机Silverlight的手势,看到的用户界面设计和交互指南 。
为Windows Phone Silverlight允许您使用操作事件处理触摸输入。 通过这些活动,你可以在触摸和多点触摸输入响应的移动和缩放对象。 下表中描述的事件。
事件 | 描述 |
|---|---|
ManipulationStarted | 当用户启动一个放置在屏幕上的手指或手指直接操作,发生此事件。 |
ManipulationDelta | 此事件一再发生,当用户在屏幕上移动自己的手指或手指。 |
ManipulationCompleted | 此事件发生时,当用户从屏幕上删除自己的手指或手指 |
注意:
Silverlight的控件在Windows Phone支持手势识别,支持,如水龙头,锅,轻弹的手势。 你可以处理简单的手势,如自来水,双抽头,自来水和掌握使用鼠标事件。 有关更多信息,请输入主题为Windows Phone 。
在XNA框架的手势支持
XNA框架提供了一个用于开发应用程序的强大的触摸手势系统。 开发人员可以利用内置的姿态系统,而不是从头开始实施。 在Windows Phone的下面的XNA手势支持。
GestureType | 描述 |
|---|---|
点击 | 手指触摸屏幕和释放。 |
DoubleTap | 这个手势代表连续两个水龙头。 |
举行 | 用手指触摸屏幕,并拥有一个短暂的时间内发生。 |
FreeDrag | 手指触摸屏幕,在任何方向移动。 |
VerticalDrag | 手指触摸屏幕向上或向下移动。 |
HorizontalDrag | 用手指触摸屏幕,并在左或右方向移动。 |
DragComplete | 标志着一个FreeDrag年底,VerticalDrag,或HorizontalDrag手势。 |
弗里克 | 用手指在屏幕上拖动,解除没有停止。 |
捏 | 两个手指按在屏幕上走动。 |
PinchComplete | 这种姿态,标志着一掐的姿态结束。 |
下面的列表提供了有益的主题和实施手势支持在XNA应用程序的文章:








最新评论