在WP7设备上,我有一个画布。当用户触摸画布上的任何位置时,在该位置处显示图像。
我想添加一个功能,如果用户用一根手指触摸并握住屏幕,然后用另一个手指触摸另一个地方的屏幕,则还会显示图像。所以基本上我希望能够以最简单的方式捕捉和回应第二次触摸。有什么想法吗?
答案 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/