如何在按下另一根手指的同时注册触摸

时间:2011-03-19 06:28:51

标签: silverlight windows-phone-7

在WP7设备上,我有一个画布。当用户触摸画布上的任何位置时,在该位置处显示图像。

我想添加一个功能,如果用户用一根手指触摸并握住屏幕,然后用另一个手指触摸另一个地方的屏幕,则还会显示图像。所以基本上我希望能够以最简单的方式捕捉和回应第二次触摸。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

你看过Gesture服务吗? Pinch *活动让您可以处理两个同时触摸。

请参阅example

答案 1 :(得分:1)

你需要的只是位于Microsoft.Phone.Controls命名空间中的GestureListener,它可以处理几个手势,如

  • 轻弹
  • 拖动
  • 滑动
  • 等。

您可以像这样使用

var gestureListener = GestureService.GetGestureListener(myCanvas);

//registering the Events
gestureListener.PinchStarted += new EventHandler<PinchStartedGestureEventArgs>(PinchStartedHandler);
gestureListener.PinchDelta += new EventHandler<PinchGestureEventArgs>(PinchDeltaHandler);
gestureListener.PinchCompleted += new EventHandler<PinchGestureEventArgs>(PinchCompletedHandler);

在适当的Hanler-Methods中,你可以进行旋转和缩放变换。

答案 2 :(得分:1)

由于您明确使用Silverlight,因此本文将向您展示如何为自己实现多点触控 - http://mine.tuxfamily.org/?p=111

注册触摸

 Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);

然后处理这些接触:

 void Touch_FrameReported(object sender, TouchFrameEventArgs e)
 {
        // if there are more than one finger on screen
        if (e.GetTouchPoints(myCanvas).Count == 2)
        {
            TouchPointCollection tpc = e.GetTouchPoints(myCanvas);
            // use tpc[0].Position
            // use tpc[1].Position
        }
 }

或者,如果您想使用现成的Gestures,请考虑使用最新的Silverlight Toolkit - 请参阅此博客文章以获取信息 - http://3water.wordpress.com/2011/03/09/wp7-gesture-recognition-2/