上篇文章介绍了Silverlight for windows Phone中的高级触控编程接口,本文将讲解Silverlight for Windows Phone Toolkit中的GestureListener对象。有了上篇文章的铺垫,再来看GestureListener的相关 *** 作就很容易了。
一.Silverlight for Windows Phone ToolkitSilverlight for windows Phone Toolkit为windows Phone提供了很多方便易用的控件,我们可以通过上面的地址下载后进行安装,下面是安装过程的截图:
装好后,需要在项目中添加程序集的引用,如下图:
然后在Code-Behind文件中添加相应的名称空间:
using Microsoft.Phone.Controls;在XAML代码中添加xmlns:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"二.使用GestureListener
注意GestureListener是在XAML元素上应用的,所以要使用GestureListener,首先要在那个元素中添加<GestureService.GestureListener>对象,然后再为我们要监听的手势添加事件处理程序。由于是在XAML元素中应用,所以手势只有在被应用到的那个元素中才能被识别。GestureListener支持以下手势:
Tap DoubleTap Hold Flick Pinch Drag and Drop我使用了上篇文章中那个程序的UI,来看一下程序的Logic Tree和效果图:
我对这个矩形添加了以下手势的监听:
代码 < Rectangle x:name ="rectangle" WIDth ="200" HeightFill ="Blue" stroke ="Red" strokeThickness ="5" >
toolkit:GestureService.GestureListener
toolkit:GestureListener Tap ="GestureListener_Tap"
DoubleTap ="GestureListener_DoubleTap"
Flick ="GestureListener_Flick"
Hold ="GestureListener_Hold"
GestureBegin ="GestureListener_GestureBegin"
GestureCompleted ="GestureListener_GestureCompleted"
DragStarted ="GestureListener_DragStarted"
DragDelta ="GestureListener_DragDelta"
DragCompleted ="GestureListener_DragCompleted" /> </ Rectangle.Rendertransform Translatetransform ="translation"
Rectangle >
在Code-Behind文件中的事件处理程序如下:
代码 using System;System.Diagnostics;
System.windows;
System.windows.Media;
Microsoft.Phone.Controls;
namespace windowsPhoneGestureListenerDemo
{
public partial class MainPage : PhoneApplicationPage
{
Random rand = new Random();
// Constructor MainPage()
{
InitializeComponent();
}
private voID GestureListener_Tap( object sender, GestureEventArgs e)
{
if (e.OriginalSource == rectangle)
{
rectangle.Fill SolIDcolorBrush(
color.FromArgb( 255 , ( byte )rand.Next( 256 ),
( )));
}
var position e.Getposition(rectangle);
DeBUG.Writeline( " Tap\n " );
}
GestureListener_DoubleTap( {
translation.X translation.Y 0 ;
DeBUG.Writeline( DoubleTap\n GestureListener_Flick( {
DeBUG.Writeline( Flick );
DeBUG.Writeline( Angle: + e.Angle);
DeBUG.Writeline( Direction: e.Direction.ToString());
DeBUG.Writeline( HorizontalVeLocity(X): e.HorizontalVeLocity.ToString() VerticalVeLocity(Y): e.VerticalVeLocity.ToString() \n GestureListener_Hold( {
DeBUG.Writeline( Hold\n );
MessageBox.Show( You are holding the rectangle! Hold }
GestureListener_GestureBegin( {
var position GestureBegin GestureBegin Point: X: position.X Y: position.Y GestureListener_GestureCompleted( GestureCompleted GestureCompleted Point: X: GestureListener_DragStarted( {
DeBUG.Writeline( DragStarted e.Direction.ToString() GestureListener_DragDelta( {
this .translation.X += e.HorizontalChange;
.translation.Y e.VerticalChange;
DeBUG.Writeline( DragDelta Change: X: e.HorizontalChange.ToString() Y: e.VerticalChange GestureListener_DragCompleted( {
DeBUG.Writeline( DragCompleted HorizontalChange(X): VerticalChange(Y): e.VerticalChange);
DeBUG.Writeline( );
}
}
} 复制代码
这些事件使用起来非常方便。GestureBegin和GestureCompleted类似于上一篇文章中的ManipulationStarted和ManipulationCompleted,与Manipulation事件最为相似的尤属Drag事件了。
在单击(Tap)时,矩形的颜色会随机变化,输出如下:
在双击(Double Tap)时,矩形会回到原始位置,同时颜色发生变化,因为在双击中包含了单击 *** 作,输出如下:
在按下并保持(Hold)时,会d出一个对话框,输出如下:
Flick *** 作中包含着Drag *** 作,输出如下:
Drag *** 作的输出如下:
通过Silverlight for Windows Phone Toolkit中的GestureListener对象和其相关的事件,我们可以轻松的对手势进行识别。在下一篇文章中我会介绍XNA类库中与手势相关的触控 *** 作。
三.下载示例代码:
WindowsPhoneGestureListenerDemo.zip
如果大家喜欢我的文章,请点击“推荐”,谢谢!
总结以上是内存溢出为你收集整理的WP7-触控 *** 作之GestureListener全部内容,希望文章能够帮你解决WP7-触控 *** 作之GestureListener所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)