GestureListener有下面的事件:
如上图,事件基本和名字所述,这里和Manipulation的方法差不多的是GestureBegin,GestureCompleted。DragDelta.DragStarted.DragCompleted.那随便用这个GestureListener小试一把吧。
大家如果玩过WP7的实况就知道。那个控制方向的东东,一个小圆盘。我打算用这个GestureListener来实现下那个。
要添加需要的DLL和命名空间。但是我懒,因为还得到C盘去寻找toolkit的DLL。索性拖控件一把。这样,神马DLL,命名空间都给我添加好了。人懒了没办法。
在XAML下添加如下代码: @H_404_20@ <Ellipse x:name="outsIDe" WIDth="200" Height="200" HorizontalAlignment="left"
VerticalAlignment="top" margin="50,50,0" Fill="Orange" >
</Ellipse>
<Ellipse x:name="rectangle" WIDth="100" Height="100" HorizontalAlignment="left"
VerticalAlignment="top" margin="100,100,0"
Fill="Blue" stroke="Red" strokeThickness="5">
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener
DragDelta="GestureListener_DragDelta"
DragCompleted="GestureListener_DragCompleted"
/>
</toolkit:GestureService.GestureListener>
<Ellipse.Rendertransform>
<Translatetransform x:name="translation"/>
</Ellipse.Rendertransform>
</Ellipse> 复制代码 在设计器上显示如下:
现在思路是:主要处理触摸 *** 作在里面的圆。使之可以在外圆里面动,那么要做的只是在Delta下控制内圆的位置和DragCompleted下把内圆放回原处。感觉不错的是DragDeltaGestureEventArgs提供了平行和竖直方向的坐标改变值。这样做起来就相当方便了。
那么代码如下: private voID GestureListener_DragDelta(object sender,DragDeltaGestureEventArgs e)
{
double x = this.translation.X + e.HorizontalChange;
double y = this.translation.Y + e.VerticalChange;
if (x <= -50)
this.translation.X = -50;
else if (x >= 50)
this.translation.X = 50;
else
this.translation.X = x;
if (y <= -50)
this.translation.Y = -50;
else if (y >= 50)
this.translation.Y = 50;
this.translation.Y = y;
}
private voID GestureListener_DragCompleted(object sender,DragCompletedGestureEventArgs e)
this.translation.X = 0;
this.translation.Y = 0;
} 复制代码 这样,就可以实现内圆在外圆上运动了。如果想要知道究竟现在手指控制的方向是上下左右什么的。自己判断translation的坐标就知道了。这个Translatetransform提供的是左上角的坐标并且相对自己为(0,0)。很好处理吧。 不过,可惜的是,这个GestureListener也是用的是主要触摸点,如果是非主要触摸点它又不工作了。。。。可惜了。不过做些手势 *** 作识别还是很不错的选择。 原文地址:http://blog.csdn.net/fengyun1989/article/details/7361236 @H_419_0@ 总结
以上是内存溢出为你收集整理的WP7中多点触控(二)全部内容,希望文章能够帮你解决WP7中多点触控(二)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)