2011-03-19 50 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/