silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了WP7中多点触控(二)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

寻找能简单处理触摸事件的方法,silverlight低级触摸屏事件,由于不太方便,暂时不用,高级事件Manipulation。由于没有发现多点触摸处理的方法也果断弃之。接着就发现了Toolkit的GestureListener。用了下,挺方便的。 GestureListener有下面的事件:   如上图,事件基本和名字所述,这里和Manipulation的方法差不多的是GestureBegin,G
寻找能简单处理触摸事件的方法,silverlight低级触摸屏事件,由于不太方便,暂时不用,高级事件Manipulation。由于没有发现多点触摸处理的方法也果断弃之。接着就发现了Toolkit的GestureListener。用了下,挺方便的。
GestureListener有下面的事件:

WP7中多点触控(二)

 
如上图,事件基本和名字所述,这里和Manipulation的方法差不多的是GestureBegin,GestureCompleted。DragDelta.DragStarted.DragCompleted.那随便用这个GestureListener小试一把吧。
大家如果玩过WP7的实况就知道。那个控制方向的东东,一个小圆盘。我打算用这个GestureListener来实现下那个。
添加需要的DLL和命名空间。但是我懒,因为还得到C盘去寻找toolkit的DLL。索性拖控件一把。这样,神马DLL,命名空间都给我添加好了。人懒了没办法。
在XAML下添加如下代码
  1. <Ellipse x:Name="outside" Width="200" Height="200" HorizontalAlignment="Left"
  2.                      VerticalAlignment="Top" Margin="50,50,0" Fill="Orange" >
  3.             </Ellipse>
  4.             <Ellipse x:Name="rectangle" Width="100" Height="100" HorizontalAlignment="Left"
  5.                        VerticalAlignment="Top" Margin="100,100,0" 
  6.                            Fill="Blue" stroke="Red" strokeThickness="5">
  7.                 <toolkit:Gestureservice.GestureListener>
  8.                     <toolkit:GestureListener 
  9.                                              DragDelta="GestureListener_DragDelta"
  10.                                              DragCompleted="GestureListener_DragCompleted"
  11.                                              />
  12.                 </toolkit:Gestureservice.GestureListener>
  13.                 <Ellipse.RenderTransform>
  14.                     <TranslateTransform x:Name="translation"/>
  15.                 </Ellipse.RenderTransform>
  16.             </Ellipse>  
复制代码
在设计器上显示如下:

WP7中多点触控(二)

 
现在思路是:主要处理触摸操作在里面的圆。使之可以在外圆里面动,那么要做的只是在Delta下控制内圆的位置和DragCompleted下把内圆放回原处。感觉不错的是DragDeltaGestureEventArgs提供了平行和竖直方向的坐标改变值。这样做起来就相当方便了。
那么代码如下:
  1.       private void GestureListener_DragDelta(object sender,DragDeltaGestureEventArgs E)
  2.         {
  3.             double x = this.translation.X + e.HorizontalChange;
  4.             double y = this.translation.Y + e.VerticalChange;
  5.             if (x <= -50)
  6.                 this.translation.X = -50;
  7.             else if (x >= 50)
  8.                 this.translation.X = 50;
  9.             else
  10.                 this.translation.X = x;

  11.             if (y <= -50)
  12.                 this.translation.Y = -50;
  13.             else if (y >= 50)
  14.                 this.translation.Y = 50;
  15.                 this.translation.Y = y;
  16.         }
  17.         private void GestureListener_DragCompleted(object sender,DragCompletedGestureEventArgs E)
  18.             this.translation.X = 0;
  19.             this.translation.Y = 0;
  20.         }  
复制代码
这样,就可以实现内圆在外圆上运动了。如果想要知道究竟现在手指控制的方向是上下左右什么的。自己判断translation的坐标就知道了。这个TranslateTransform提供的是左上角的坐标并且相对自己为(0,0)。很好处理吧。 不过,可惜的是,这个GestureListener也是用的是主要触摸点,如果是非主要触摸点它又不工作了。。。。可惜了。不过做些手势操作识别还是很不错的选择。 原文地址:http://blog.csdn.net/fengyun1989/article/details/7361236

大佬总结

以上是大佬教程为你收集整理的WP7中多点触控(二)全部内容,希望文章能够帮你解决WP7中多点触控(二)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。