2011-03-19 48 views
2

在WP7设备上,我有一个画布。当用户触摸画布上的任何位置时,图像将显示在该位置。如何在按住另一个手指的同时注册触摸

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

+0

我得到了一个win7手机,n它唯一能够处理1个手指(非多点触控),如果我触摸第二个手指的“光标”去两个哈哈它的中间它没有iphone – 2011-03-19 06:33:40

+0

奇怪我认为他们必须处理多点触控作为基本规格的一部分。矿处理捏等没有问题 – Nogusta 2011-03-19 06:37:45

+1

哦,每个WP7支持最少四个多点触摸点,这就是事实! XNA中的 – cordellcp3 2011-03-19 08:52:07

回答

3

你看过手势服务吗?捏*事件让你处理两个simultanious触摸。

请参阅example

+0

我假设silverlight。 xna的解决方案是不同的。 – JoDG 2011-03-19 08:04:12

+0

捏完成给了我正是我想要的。我在画布上留下鼠标左键事件,然后捏完成处理第二次触摸。谢谢你们 – Nogusta 2011-03-19 11:58:27

1

你所需要的仅仅是在于Microsoft.Phone.Controls命名空间中的GestureListener,它可以处理一对夫妇的手势像

  • 弗里克
  • 刷卡

您可以使用它li ke so

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中,您可以进行旋转和缩放转换。

+0

对不起,我不能标记你的答案是正确的,因为它是。谢谢 – Nogusta 2011-03-19 11:59:20

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 
     } 
} 

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