Windows Mobile 6.5 Gesture API 介绍 --- (3) 使用Managed Gesture API
2010-01-07 00:32
549 查看
本文首发自MobileSide.cn,原文地址:http://mobileside.cn/post/2010/01/07/GestureAPI3.aspx
-----------------------------------------------------------------------------------------------------------------
在本系列的第一节《Windows Mobile 6.5 Gesture API 介绍 --- (1) 概述》中,我们提到了微软针对Windows Mobile的Gesture提供了5种不同的手势。他们分别是Tap, Double Tap, Hold, Flick, Pan。如果您使用C++来开发Windows Mobile 6.5上的应用程序,那么请参考MSDN上关于Windows Mobile上Gesture的参考文档 http://msdn.microsoft.com/en-us/library/ee220917.aspx。 如果您是使用托管代码,那么您可以使用由微软的两位工程师(Alex Yakhnin, Ron Buckton)所封装的针对托管代码的API(http://code.msdn.microsoft.com/gestureswm)。
在这套API中,分别针对这5种手势做了封装,不过名字略有改动:Tap改为Select; Double Tap改为DoubleSelect; Flick改为Scroll。 Hold和Pan没有改变。这套API的用法很简单,实例化一个他们封装好的手势识别器组件,然后给它指定要监控的对象。最后,加上针对这5种手势的事件处理函数即可。如下代码所示:
private void InitGestureRecognizer()
{
gestureRecognizer1 = new GestureRecognizer(this.panel1);
//You can also set the TargetControl property
//gestureRecognizer1.TargetControl = this.panel1;
gestureRecognizer1.Hold += new EventHandler<GestureEventArgs>(gestureRecognizer1_Hold);
gestureRecognizer1.Select += new EventHandler<GestureEventArgs>(gestureRecognizer1_Select);
gestureRecognizer1.DoubleSelect += new EventHandler<GestureEventArgs>(gestureRecognizer1_DoubleSelect);
gestureRecognizer1.Pan += new EventHandler<GestureEventArgs>(gestureRecognizer1_Pan);
gestureRecognizer1.Scroll += new EventHandler<GestureScrollEventArgs>(gestureRecognizer1_Scroll);
}
void gestureRecognizer1_Scroll(object sender, GestureScrollEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + "), d=" + e.ScrollDirection + ", a=" + e.Angle + ", v=" + e.Velocity;
}
void gestureRecognizer1_Pan(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
void gestureRecognizer1_DoubleSelect(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
void gestureRecognizer1_Select(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
void gestureRecognizer1_Hold(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
该示例代码是在窗体上放了两个控件: Panel1用来捕获手势事件;label1用来显示当前手势的一些参数。 运行状况如下图所示:
最后一部分,是demo程序的源代码:GestureDemo2.zip (58.05 kb)
看到了吧,在Windows Mobile 6.5中,我们要给我们的程序加上手势的支持是如此的简单方便。好了,本小节就到这里,在下一节中我们将讨论手势和动画。
-----------------------------------------------------------------------------------------------------------------
在本系列的第一节《Windows Mobile 6.5 Gesture API 介绍 --- (1) 概述》中,我们提到了微软针对Windows Mobile的Gesture提供了5种不同的手势。他们分别是Tap, Double Tap, Hold, Flick, Pan。如果您使用C++来开发Windows Mobile 6.5上的应用程序,那么请参考MSDN上关于Windows Mobile上Gesture的参考文档 http://msdn.microsoft.com/en-us/library/ee220917.aspx。 如果您是使用托管代码,那么您可以使用由微软的两位工程师(Alex Yakhnin, Ron Buckton)所封装的针对托管代码的API(http://code.msdn.microsoft.com/gestureswm)。
在这套API中,分别针对这5种手势做了封装,不过名字略有改动:Tap改为Select; Double Tap改为DoubleSelect; Flick改为Scroll。 Hold和Pan没有改变。这套API的用法很简单,实例化一个他们封装好的手势识别器组件,然后给它指定要监控的对象。最后,加上针对这5种手势的事件处理函数即可。如下代码所示:
private void InitGestureRecognizer()
{
gestureRecognizer1 = new GestureRecognizer(this.panel1);
//You can also set the TargetControl property
//gestureRecognizer1.TargetControl = this.panel1;
gestureRecognizer1.Hold += new EventHandler<GestureEventArgs>(gestureRecognizer1_Hold);
gestureRecognizer1.Select += new EventHandler<GestureEventArgs>(gestureRecognizer1_Select);
gestureRecognizer1.DoubleSelect += new EventHandler<GestureEventArgs>(gestureRecognizer1_DoubleSelect);
gestureRecognizer1.Pan += new EventHandler<GestureEventArgs>(gestureRecognizer1_Pan);
gestureRecognizer1.Scroll += new EventHandler<GestureScrollEventArgs>(gestureRecognizer1_Scroll);
}
void gestureRecognizer1_Scroll(object sender, GestureScrollEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + "), d=" + e.ScrollDirection + ", a=" + e.Angle + ", v=" + e.Velocity;
}
void gestureRecognizer1_Pan(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
void gestureRecognizer1_DoubleSelect(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
void gestureRecognizer1_Select(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
void gestureRecognizer1_Hold(object sender, GestureEventArgs e)
{
label1.Text = e.Kind.ToString() + ": " + e.State + ", (" + e.X + ", " + e.Y + ")";
}
该示例代码是在窗体上放了两个控件: Panel1用来捕获手势事件;label1用来显示当前手势的一些参数。 运行状况如下图所示:
最后一部分,是demo程序的源代码:GestureDemo2.zip (58.05 kb)
看到了吧,在Windows Mobile 6.5中,我们要给我们的程序加上手势的支持是如此的简单方便。好了,本小节就到这里,在下一节中我们将讨论手势和动画。
相关文章推荐
- Windows Mobile 6.5 Gesture API 介绍 --- (4) 使用动画引擎
- Windows Mobile 6.5 Gesture API 介绍 --- (1) 概述
- Windows Mobile 6.5 Gesture API 介绍 --- (2) 默认支持Gesture的控件
- Windows Mobile 6.5 手势识别API(Gesture)
- hadoop_hbase Java API 介绍及使用示例
- 黑马程序员----------java基础API之String类的介绍和使用
- HBase总结(十一)hbase Java API 介绍及使用示例
- jQuery EasyUI API 中文文档 - Tree树使用介绍
- android源代码分析一:使用内部(com.android.internal)和隐藏(@hide)API ——介绍
- HBase总结(十一)hbase Java API 介绍及使用示例
- HBase总结(十一)hbase Java API 介绍及使用示例
- JFreeChart使用说明一--api介绍
- 使用内部(com.android.internal)和隐藏(@hide)API[第1部分,介绍]
- Java常用API(六)Date 日期类介绍及使用
- Hadoop API 使用介绍
- 使用eBay API基本步骤介绍
- jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
- 使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍
- hbase Java API 介绍及使用示例
- 使用eBay API基本步骤介绍