WP7-触控 *** 作之GestureListener

WP7-触控 *** 作之GestureListener,第1张

概述 上篇文章介绍了Silverlight for Windows Phone中的高级触控编程接口,本文将讲解Silverlight for Windows Phone Toolkit中的GestureListener对象。有了上篇文章的铺垫,再来看GestureListener的相关 *** 作就很容易了。 一.Silverlight for Windows Phone Toolkit     Silver

 上篇文章介绍了Silverlight for windows Phone中的高级触控编程接口,本文将讲解Silverlight for Windows Phone Toolkit中的GestureListener对象。有了上篇文章的铺垫,再来看GestureListener的相关 *** 作就很容易了。

一.Silverlight for Windows Phone Toolkit

    Silverlight 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"  Height
                           Fill
="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所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存