猫猫1 发表于 2015-5-9 09:31:41

Windows Phone 7 编程实践 基础篇—多点触控示例(Silverlight)



作品目标:Windows Phone 7 开发的实用手册

Windows Phone 7 编程实践

第一篇基础篇
第一章开启创新之门
第二章横向和纵向视图
第三章简单触控和多点触控(多点触控示例)
第四章传感器和服务
第五章全球化(全球化示例)
第二篇Silverlight篇
第一章应用程序菜单栏(应用程序菜单栏示例)
第二章页面导航和异常处理
第三章隔离存储空间
第四章推送通知(动态区块推送通知示例、云计算推送通知)
第五章必应地图控件
第六章数据绑定
第七章动画和多媒体(影音Hub示例)
第八章全景和枢轴(全景Panorama/枢轴Pivot示例)
第九章任务(Task)
第十章墓碑机制实现多任务(多任务示例)
第十一章MVVM设计模式的应用
第十二章XNA的应用
第三篇XNA篇
第一章XNA Game Studio游戏开发基础框架
第二章2D游戏中的触摸和手势
第三章2D游戏中的消息发送和墓碑机制
第四章XNA Game Studio 3D游戏开发基础

参考资料:
Programming Windows Phone 7
MSDN Library -- Windows Phone Development
UI Design and Interaction Guide for Windows Phone 7 v2.0
Designing Web Sites for Phone Browsers
Develop for Windows Phone & XBOX 360 Code Sample
Windows Phone 7 Application Certification Requirements

在本书的整理过程中,力求从深度和不同的侧面诠释Windows Phone的开发技术。由于个人能力和水平有待提高,很多问题的分析还很肤浅。敬请各位不吝赐教,提出改进建议。

改变并不是一件坏事情,所有的改变都是为了更好。改变一切的关键就是视角。我的目标:用科技改变我所认知的世界。
改版声明:本系列原名称为Programming_Windows_Phone_7 读书笔记,随着认知的更新和代码实践的增加,想与大家分享的更多的是具体的代码示例,因此将整个系列的名称改为Windows Phone 7 编程实践,也将整个系列的重点放在具体可用的示例上,而非原先仅仅认知就可以了的目标上。同时这个改变也是我个人研究重点正式的改变,近期内所有的研究都围绕着Windows Phone 7的开发上,这也是我人生历程中职业生涯的重要改变。

Silverlight的多点触控

告别简单的手势识别,通过对复杂的手势的反馈带给操作者的感受无异于驾驭F1驰骋。
动手实践


下载代码ManipulationProject
新建一个Visual C#的Windows Phone工程,工程名称为ManipulationProject。

将下面的XAML代码加入到MainPage.xaml中。


这段代码的作用是在画布上创建了一个蓝色的的矩形。应用程序订阅了ManipulationDelta事件,对于该事件的响应代码中包含的移动矩形的控制逻辑。


   
   
在MainPage类中, 添加如下的变量。


private TransformGroup transformGroup;
private TranslateTransform translation;
private ScaleTransform scale;
在MainPage.xaml中添加ManipulationDelta事件处理程序Canvas_ManipulationDelta


如图在MainPage.xaml中点击右键,选择"Properties"。


在"Event"中设置ManipulationDelta的响应事件Canvas_ManipulationDelta。



设置完毕后,我们会在MainPage类中看见下面的代码被自动添加:

privatevoid Canvas_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{

}添加下面的代码到MainPage的构造函数中


this.transformGroup = newTransformGroup();
this.translation = newTranslateTransform();
this.scale = newScaleTransform();

this.transformGroup.Children.Add(this.scale);
this.transformGroup.Children.Add(this.translation);
this.rectangle.RenderTransform = this.transformGroup;

在MainPage类,ManipulationDelta事件处理程序Canvas_ManipulationDelta中添加以下代码。
在手指操作期间ManipulationDelta事件发生时触摸输入更改位置可能发生多次。例如,如果用户手指拖动屏幕,ManipulationDelta事件发生多次作为手指移动。
privatevoid Canvas_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
      {
// Scale the rectangle.
if ((e.DeltaManipulation.Scale.X == 0) || (e.DeltaManipulation.Scale.Y == 0))
            {
// Increase ScaleX and ScaleY by 5%.
this.scale.ScaleX *= 1.05;
this.scale.ScaleY *= 1.05;
            }
else
            {
this.scale.ScaleX *= e.DeltaManipulation.Scale.X;
this.scale.ScaleY *= e.DeltaManipulation.Scale.Y;
            }

// Move the rectangle.
this.translation.X += e.DeltaManipulation.Translation.X;
this.translation.Y += e.DeltaManipulation.Translation.Y;

      }
编译并运行程序


屏幕上蓝色的矩形等着您的触摸。

测试应用程序

试一试复杂的手势变化,尝试Windows Phone的互动体验。

[*]移动矩形,你的手指放在该矩形,并在屏幕上移动手指。
[*]若要调整大小的矩形,把两个手指放在矩形上缩小和延伸(Pinch and Stretch),如下图。


页: [1]
查看完整版本: Windows Phone 7 编程实践 基础篇—多点触控示例(Silverlight)