IPHONE那种用手指在屏幕上划来划去的操作方式开创了用户体验新时代。这种方式叫做Gesture(手势)。
在WinCE6.0 R3中增添了对5种Gesture的支持,分别为
1. Flick,手指朝屏幕的任何方向快速的滑动,并松开;
2. Pan,手指在屏幕上拖动目标,不松手;
3. Tap,点击;
4. Double Tap,双击;
5. Hold,按住屏幕不放(也不移动),相当于点击鼠标右键。
PS:据说是由于专利问题,所以现在还不支持多点触摸,就是说不能直接实现两个手指放大缩小那种功能。据说该专利掌握在苹果手里,又据说winCE7.0会支持。。。。。
Silverlight for Windows Embedded中也对Gesture进行了支持,可以对UIElement用XRGestureEventArgs结构创建Gesture事件的委托(Delegate,可以理解为事件处理函数指针)。UIElement可以看作是所有可见控件的父类。
一个例子,功能是当flick屏幕时播放动画
C++代码如下:
001
#include "stdafx.h"
002 #include "pwinuser.h"
003 #include "xamlruntime.h"
004 #include "xrdelegate.h"
005 #include "xrptr.h"
006 #include "resource.h"
007
008 //保存根据xaml 资源创建的可视树根
009 IXRFrameworkElementPtr root ;
010
011 //对xaml中的grid面板的手势事件处理
012 class Grid_GestureEventHandler
013 {
014 public :
015 HRESULT OnGesture ( IXRDependencyObject * pSender , XRGestureEventArgs * pArgs )
016 {
017 IXRStoryboardPtr storyboard ;
018 switch (pArgs -> GestureInfo . dwID ) //从XRGestureEventArgs中得到手势的类型
019 {
020 case GID_BEGIN:
021 break ;
022 case GID_END:
023 break ;
024 case GID_PAN:
025 break ;
026 case GID_ROTATE:
027
002 #include "pwinuser.h"
003 #include "xamlruntime.h"
004 #include "xrdelegate.h"
005 #include "xrptr.h"
006 #include "resource.h"
007
008 //保存根据xaml 资源创建的可视树根
009 IXRFrameworkElementPtr root ;
010
011 //对xaml中的grid面板的手势事件处理
012 class Grid_GestureEventHandler
013 {
014 public :
015 HRESULT OnGesture ( IXRDependencyObject * pSender , XRGestureEventArgs * pArgs )
016 {
017 IXRStoryboardPtr storyboard ;
018 switch (pArgs -> GestureInfo . dwID ) //从XRGestureEventArgs中得到手势的类型
019 {
020 case GID_BEGIN:
021 break ;
022 case GID_END:
023 break ;
024 case GID_PAN:
025 break ;
026 case GID_ROTATE:
027