Windows Phone 7 开发探索笔记1——触控操作之Touch
在Silverlight for Windows Phone中,我们有多种方法来获取设备触摸信息并对其进行控制。与此最密切相关的是以下几个事件和定义在 UIElement中的 ManipulationStarted,ManipulationDelta 和 ManipulationCompleted。本节只讲解Touch.FrameReported事件。
一.Touch.FrameReported事件
Touch.FrameReported事件提供了应用程序级的服务,是Silverlight for Windows Phone中提供的底层触控编程接口。我们可以通过它来获取操作系统或整个应用程序中每个触控点的信息。Touch是一个静态类,它只包含一个静态成员就是windows.input.touch.framereported%28v=VS.95%29.aspx">FrameReported事件。在程序中对此事件进行订阅时可以通过事件处理程序中的TouchFrameEventArgs参数获得我们想要的数据。
类包含以下成员(图片来自MSDN):
其中黄色的为TouchFrameEventArgs自身的成员。先来看GetTouchPoints方法,它会返回一个触控点的集合,当你的Windows Phone 7应用程序需要用多个手指来操作,同时你要清楚的知道每个手指所在的具体位置时它会非常有用。接下来是GetPrimaryTouchPoint方法,它返回的是主触控点(解惑主触摸点: 只有一个手指触摸屏幕时,这个触控点才叫做主(Primary)触控点。如果我们用一个手指触摸屏幕时,它一定是主点。在第一个手指仍触摸着屏幕时,将第二个手指放在屏幕上。很显然,第二个手指不是主触控点。但现在如果仍将第二个手指放在屏幕上,抬起第一个手指,然后再将其放回到屏幕上。它还是主触控点吗?不是!主触控点只会在没有其他手指触摸屏幕时才出现。)GetPrimaryTouchPoint和GetTouchPoints这两个方法都需要一个UIElement类型的参数,并且都返回与相关的信息。下面我们来看看TouchPoint类的属性:
TouchPoint是在屏幕上触摸的手指的一个抽象。它有4个只读属性:
Action:类型为TouchAction枚举,包含3个值:Down,,Move和Up
Position:类型为Point,它是相对于引用元素的左上角而言的,这里说的引用元素就是刚才提到的GetPrimaryTouchPoint和GetTouchPoints的UIElement参数,如果传入的参数是null,那么得到的Position就是相对于屏幕的左上角的(在传入非null值时,Position中的数据很有可能会是负的)。
Size:类型是Size,它是要计算出屏幕中被触摸的一个矩形区域,不过这个属性好像并不能获取有效的值,在我的演示程序中它的Width和Height属性始终是1(也许是因为在模拟器上运行的原因)。
TouchDevice:类型TouchDevice,它包含2个相关新闻>>
- 发表评论
-
- 最新评论 更多>>