WPF的多点触摸

背景:不得不说Android的出现,打乱的微软的诸多部署。首先Android作为手机操作系统,迅速在Mobile市场占有一席之地,Windows Mobile系统连Symbian都够不成挑战,更不用说Android。在看看个人PC和MID,Android系统以其完善而强大的功能,越来越得到广泛采用,Android向X86的移植项目也如火如荼。各大PC厂商纷纷推出自己的Android版本的PC和MID设备。为什么Android会如此广受青睐呢,原因简单,因为它开源,所支持的功能强大。更适合做MID类产品操作系统。

反观MS的几个系统,WIN7的推出的确实现了很多很酷很炫的功能,在底层也实现了多点触摸消息的支持,但是当MS还没有推出其支持多点触摸的WIn7版本时,Android出现了,给人眼前一亮,Zoom,Rotate,Pan,Elasticity & Inertia 等诸多gestures 给人很强大很炫目的用户体验。因此,MS急于将多点触摸的功能集成到了Win7,也就是我在《设计模式系列之装饰者模式》提到的关于MS 的MultiToch的发展过程。进入正题。

MS原来是打算多MultiTouch这种体验放入专门的开发包中,也就是 Microsoft Surface 至于在Win7中实现这一功能,是下一步的事情。也就是说Microsoft .Net4.0是MS强行将MultiTouch集成于其中的产品。但是无论MS Surface还是MS .Net都是以WPF技术为基础的,这一点从两者的界面效果中可以发现。本文WPF多点触摸也将从这两发面进行阐述。

1. MS .Net3.5实现MultiTunch

首先请自行下载MS提供的支持多点触摸的DLL,点这里

将下载后的DLL加入到工程中,这里给读者分享几个使用例子

MultiTouch学习一

MultiTouch学习二

MultiTouch学习三

Windows7.Multitouch 和 Windows7.Multitouch.WPF是MS提供的MiltiTouch Dll,以支持在VS2008平台开发MultiTouch。其中Windows7.Multitouch是对底层消息的封装,Windows7.Multitouch.WPF是真对多点触摸功能的WPF封装。

从例子中可以看到,有了这两个DLL后,开发多点触摸的方式有多种。但是就是没有Gesture的方式。这不能不说是MS开发的败笔。其实Win7底层消息的发送形式,是支持Gesture的,但不知什么原因,到了WPF里面MS就没有封装了,很是遗憾。想定制自己的WPF Gesture可以阅读以下文章。

MultiTouch Capabilities in Windows 7

Windows Touch

上面两例都是针对如何处理Gesture消息的,有兴趣的读者,可以参考Windows7.Multitouch和 Windows7.Multitouch.WPF的封装方法实现自己的WPF Gesture.

2. MS .Net4.0实现MultiTunch

如前所述,.Net4.0的MulotiTouch无非就是将上述两个DLL集成到Framework中,区别在于,.Net4.0中的控件都有Touch Event事件。

读者可以通过Touch Event 或者 Manipulations来实现

例子见MSDN

3. MS Surface

MS Surface 是微软为MultiTouch专门开发的软件平台,软硬件都由MS提供。现在对用户仅仅提供Beta体验版的开发包,详细介绍请看论坛MS官方资源

没有什么特别好说的,仅仅是界面更炫一点,毕竟XNA是做游戏的。一般在说Surface开发调试需要MS的虚拟机,Win7用户不需要。Surface程序一般较大,仅仅一个MultiTouch的piano程序,就要耗掉,几百兆内存,在PC机上开发所不能接受的。

posted @ 2012-01-06 11:08  therockthe  阅读(1856)  评论(0编辑  收藏  举报