Windows Phone开发——触控操作之GestureListener
2012-05-25 17:27
357 查看
一.Silverlight for Windows Phone Toolkit
Silverlight for Windows Phone Toolkit为Windows Phone提供了很多方便易用的控件,我们可以通过上面的地址下载后进行安装,下面是安装过程的截图:代码
<Rectangle x:Name="rectangle" Width="200" Height="200"
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"/>
</toolkit:GestureService.GestureListener>
<Rectangle.RenderTransform>
<TranslateTransform x:Name="translation"/>
</Rectangle.RenderTransform>
</Rectangle>
在Code-Behind文件中的事件处理程序如下:
代码
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media;
using Microsoft.Phone.Controls;
namespace WindowsPhoneGestureListenerDemo
{
public partial class MainPage : PhoneApplicationPage
{
Random rand = new Random();
// Constructor
public MainPage()
{
InitializeComponent();
}
private void GestureListener_Tap(object sender, GestureEventArgs e)
{
if (e.OriginalSource == rectangle)
{
rectangle.Fill = new SolidColorBrush(
Color.FromArgb(255, (byte)rand.Next(256),
(byte)rand.Next(256),
(byte)rand.Next(256)));
}
var position = e.GetPosition(rectangle);
Debug.WriteLine("Tap\n");
}
private void GestureListener_DoubleTap(object sender, GestureEventArgs e)
{
translation.X = translation.Y = 0;
Debug.WriteLine("DoubleTap\n");
}
private void GestureListener_Flick(object sender, FlickGestureEventArgs e)
{
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");
}
private void GestureListener_Hold(object sender, GestureEventArgs e)
{
Debug.WriteLine("Hold\n");
MessageBox.Show("You are holding the rectangle!", "Hold", MessageBoxButton.OK);
}
private void GestureListener_GestureBegin(object sender, GestureEventArgs e)
{
var position = e.GetPosition(rectangle);
Debug.WriteLine("GestureBegin");
Debug.WriteLine("GestureBegin Point: X:" + position.X + " Y:" + position.Y + "\n");
}
private void GestureListener_GestureCompleted(object sender, GestureEventArgs e)
{
var position = e.GetPosition(rectangle);
Debug.WriteLine("GestureCompleted");
Debug.WriteLine("GestureCompleted Point: X:" + position.X + " Y:" + position.Y + "\n");
}
private void GestureListener_DragStarted(object sender, DragStartedGestureEventArgs e)
{
Debug.WriteLine("DragStarted");
Debug.WriteLine("Direction: " + e.Direction.ToString() + "\n");
}
private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
{
this.translation.X += e.HorizontalChange;
this.translation.Y += e.VerticalChange;
Debug.WriteLine("DragDelta");
Debug.WriteLine("Direction: " + e.Direction.ToString());
Debug.WriteLine("Change: " + "X: " + e.HorizontalChange.ToString() + " Y: " + e.VerticalChange + "\n");
}
private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
{
Debug.WriteLine("DragCompleted");
Debug.WriteLine("Direction: " + e.Direction.ToString());
Debug.WriteLine("HorizontalChange(X): " + e.HorizontalChange.ToString() + " VerticalChange(Y): " + e.VerticalChange);
Debug.WriteLine("HorizontalVelocity(X): " + e.HorizontalVelocity.ToString() + " VerticalVelocity(Y):" + e.VerticalVelocity.ToString() + "\n");
}
}
}
这些事件使用起来非常方便。GestureBegin和GestureCompleted类似于上一篇文章中的ManipulationStarted和ManipulationCompleted,与Manipulation事件最为相似的尤属Drag事件了。
在单击(Tap)时,矩形的颜色会随机变化,输出如下:
在双击(Double Tap)时,矩形会回到原始位置,同时颜色发生变化,因为在双击中包含了单击操作,输出如下:
在按下并保持(Hold)时,会弹出一个对话框,输出如下:
Flick操作中包含着Drag操作,输出如下:
Drag操作的输出如下:
通过Silverlight for Windows Phone Toolkit中的GestureListener对象和其相关的事件,我们可以轻松的对手势进行识别。在下一篇文章中我会介绍XNA类库中与手势相关的触控操作。
三.下载示例代码:
http://www.2cto.com/uploadfile/2011/1012/20111012070650816.zip
作者:金山崟霸
原文连接:http://www.2cto.com/kf/201110/107492.html
相关文章推荐
- Windows Phone 7 开发探索笔记1——触控操作之Touch
- Windows 8.1 应用开发 – 触控操作
- windows phone 8.1开发SQlite数据库操作详解
- Windows Phone 7(WP7)开发 网络操作(1) HttpWebRequest基本的GET请求
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程)
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控
- 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Windows Phone 7 XNA触控操作之Gestures
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用方法)
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程)
- 16—【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能
- Windows Phone 7(WP7)开发 网络操作(2) HttpWebRequest GET请求队列
- Windows Phone 8.1开发:触控和指针事件2
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程)
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程)
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程) 分类:Androidandroid实例