在 Windows Phone 7模拟器上实现多点触摸

众所周知(当然是对WP7喜爱的人),WP 7 支持多点触摸功能,那么我们怎么来实现触摸功能呢?

实现多点WP7的基本触摸并不是非常困难,主要需要对如下几个事件进行监听

ManipulationStarted, ManipulationDelta ManipulationCompleted,这几个事件可以分别对触点开始触摸,移动,停止,做出相应的操作,但是对于一个刚刚接触开发的人,对这几个事件的处理可能还是有一定困难的,因此我在这里向大家推荐网上的一个开源项目Silverlight 4, WPF 4 and Windows Phone 7 Multi-Touch Manipulation,该项目可以到http://multitouch.codeplex.com/ 处下载。

从该网站下载后可以得到一个名为MultiTouchBehaviors.Setup.msi的安装包,安装后打开安装目录,可以得到看到一些动态库,其中最主要的就是WP7 目录下的MultiTouch.Behaviors.WP7.dll / System.Windows.Interactivity.dll,接下来的实例我们也会用到这两个库。具体怎么用呢?

首先新建一个基于SliverLightWP7应用程序,这个没什么可说的,取名MultiTouch

添加上述两个动态库的引用,如图:

     在 Windows Phone 7模拟器上实现多点触摸 

接下来在程序的主页面MainPage.xaml添加两个命名空间的引用:

       xmlns:wi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

    xmlns:wp7tb="clr-namespace:MultiTouch.Behaviors.WP7;assembly=MultiTouch.Behaviors.WP7"

 

在程序中增加一个图片,并在图片标签中添加其行为代码如下:

代码
< Image  Source ="Tulips.jpg"  x:Name ="MyImage"  Width ="320" >
            
< wi:Interaction.Behaviors >
                
< wp7tb:MultiTouchBehavior
                    
AreFingersVisible ="True"
                    IsDebugModeActive
="True"
                    IsMockActive
="True"
                    IsRotateEnabled
="True"
                    IsScaleEnabled
="True"
                    IsTranslateXEnabled
="True"
                    IsTranslateYEnabled
="True"
                    MaximumScale
="100"
                    MinimumScale
="0.5" />
            
</ wi:Interaction.Behaviors >
        
</ Image >

 

 

属性名称

作用

AreFingersVisible  

是否在点击时在点击的处出现圆圈 ,调试模式下可用

IsDebugModeActive

是否可以显示调试信息,调试模式下可用,默认为false

IsMockActive

是否可以在点击时固定一点,模拟两点触摸,调试模式下可用,默认为false  

 

IsRotateEnabled

是否可以旋转,默认为true

IsScaleEnabled  

是否可以拉伸,  默认为true

IsTranslateXEnabled

横向是否可以变化,默认为true

IsTranslateYEnabled

纵向是否可以变化,默认为true

MaximumScale

最大放大率,默认为100.0

MinimumScale

最小缩小率,默认为0.5

此时运行程序点击图片可以进行任意的拖拽,可看到如下效果:

在 Windows Phone 7模拟器上实现多点触摸 

同时也可以双击固定其中一点,实现模拟两点触摸的旋转拉伸,如图: 

在 Windows Phone 7模拟器上实现多点触摸 

你可能感兴趣的:(windows phone)