快速入门:触摸输入(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用)

原文 http://technet.microsoft.com/zh-cn/subscriptions/hh465387

快速入门:触摸输入(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用)

 

Windows 8 设备通常具有多点触摸屏幕,从而用户可以同时使用多个手指来进行不同的输入交互,如点击、拖动或收缩。Windows 运行时具有多种处理触控输入的不同机制,从而你可以创建用户能够放心浏览的沉浸式体验。 本快速入门包含在采用 C++、C# 或 Visual Basic 的 Windows 应用商店应用中使用触控输入的基本知识。有关更多的代码示例,请参阅输入示例

路线图: 本主题与其他主题有何关联?请参阅:

先决条件

本主题假定你可以使用 C++、C# 或 Visual Basic 创建基本的 Windows 应用商店应用。有关创建你的第一个 Windows 应用商店应用的说明,请参阅使用 C++、C# 或 Visual Basic 创建你的第一个 Windows 应用商店应用

用户体验指南(最佳实践)

尽管本主题包含触摸实现的某些基本知识,但对于特定的触摸方案,你还应该记住很多用户体验指南。请参阅以下内容获取详细信息:

触控输入简介

很多 Windows 8 设备都使用触摸作为主要用户输入。Windows 8 支持多点触摸屏幕,从而用户可以使用自然交互与设备进行交互。向应用中添加触摸和交互支持可以大大改进用户体验。但是,你应该仔细设计触摸支持,以确保你 的用户可以放心浏览你的应用。此外,尽管进行了触摸优化,你还必须确保你的应用能够适应传统的鼠标和键盘输入。

你可以使用多种不同的方法在使用 C++、C# 或 Visual Basic 的 Windows 应用商店应用中处理触摸输入。 内置的控件库提供使用标准交互、动画物理效果以及视觉反馈的默认触摸、鼠标和键盘支持。

如果你不需要自定义的触摸支持,则可以使用该框架提供的触摸支持并遵循触摸优化的几个简单准则,如本快速入门指南的后面部分所述。

你可以实现自己的触摸和交互支持,但要记住,用户期望获得直观的体验,包括直接与应用的元素交互。 你应该在内置支持上建立自定义触摸支持的模型,以便使内容简单,而且更容易发现。此外,你还应该为所有交互提供即时视觉反馈,以避免用户不确定性并鼓励用户探究。

若要提供自定义触摸支持,则可以处理分组到三个不同抽象级别的 UIElement 事件。高级事件(如 Tapped)可用于响应简单交互。指针事件提供较低级别的详细信息,如指针动作以及区分按压和释放手势。操作事件提供较低级别的详细信息,如手势速度和延迟以及多点触摸数据。这些事件自动支持触摸和鼠标输入,但必要时也提供信息以便让你区分实际输入设备。

手势

手势是将触摸输入数据解释为一组常见运动(如点击、滑动和收缩)的高级方法。Windows 8 中使用的常见手势包括:

交互描述
点击用一个手指触摸屏幕,然后抬起手指。
长按用一个手指触摸屏幕并保持不动。
滑动用一个或多个手指触摸屏幕并向着同一方向移动。
轻扫用一个或多个手指触摸屏幕并向着同一方向移动较短距离。
收缩用两个或多个手指触摸屏幕,然后将手指并拢在一起或分开。
旋转用两个或多个手指触摸屏幕并沿着顺时针或逆时针的弧线移动。
拉伸用两个或多个手指触摸屏幕,然后将手指分开。

 

你可以通过处理较高级别的事件(如 TappedDoubleTappedRightTappedHolding)来响应简单的触摸和鼠标手势。你也可以将 IsTapEnabledIsDoubleTapEnabledIsRightTapEnabledIsHoldingEnabled 设置为 false,以便为特定元素禁用这些手势。

指针事件(如 PointerMoved)可用于支持一个手指的简单交互,如滑动。

对于多点触摸交互(例如收缩)和使用惯性和速度数据的交互(例如拖动),需要使用操作事件。操作事件提供信息的形式并不是要执行的交互,而是触摸数据(例如位置、转换三角和速度)。你可以使用此触摸数据来确定要执行的交互类型。但是,你需要将该信息转换成等效的交互。

使用指针事件

指针事件自动支持触摸和鼠标输入,并替换更多的传统鼠标事件。

基于触摸的指针事件仅限于一个手指的交互,如点击和滑动,并且它们不支持基于速度的交互。屏幕上一个手指的触摸会转换为同等的 Windows 运行时指针事件,如将手指放在屏幕上时的 PointerPressed、抬起手指时的 PointerReleased 以及在屏幕上拖动手指时的 PointerMoved。使用 C++、C# 或 Visual Basic 的 Windows 应用商店应用使用的其他指针事件为 PointerExitedPointerEntered。指针事件的事件参数为 PointerRoutedEventArgs

以下示例显示如何使用 PointerPressedPointerReleasedPointerExited 事件来处理 Rectangle 对象上的点击交互。

首先,采用 XAML 创建名为 TestRectangleRectangle 并为 PointerPressedPointerReleasedPointerExited 事件添加事件处理程序。

<Rectangle Name="TestRectangle"
  Height="100" Width="200" Fill="Blue"
  PointerPressed="TestRectangle_PointerPressed"
  PointerReleased="TestRectangle_PointerReleased"
  PointerExited="TestRectangle_PointerExited" />

接下来,创建指针事件的事件处理程序。PointerPressed 事件处理程序增加 RectangleHeightWidthPointerReleased 事件处理程序将 HeightWidth 重新设置为起始值。最后,PointerExited 事件处理程序还将 HeightWidth 重新设置为起始值。

Private Sub TestRectangle_PointerPressed(ByVal sender As Object, 
    ByVal e As PointerRoutedEventArgs)

    Dim rect As Rectangle = CType(sender,Rectangle)

    ' Change the size of the Rectangle.
    If (Not (rect) Is Nothing) Then
        rect.Width = 250
        rect.Height = 150
    End If

End Sub
 
Private Sub TestRectangle_PointerReleased(ByVal sender As Object, 
    ByVal e As PointerRoutedEventArgs)

    Dim rect As Rectangle = CType(sender,Rectangle)

    ' Reset the dimensions on the Rectangle.
    If ((rect) IsNot Nothing) Then
        rect.Width = 200
        rect.Height = 100
    End If

End Sub
 
Private Sub TestRectangle_PointerExited(ByVal sender As Object, 
    ByVal e As PointerRoutedEventArgs)

    Dim rect As Rectangle = CType(sender,Rectangle)

    ' Finger moved out of Rectangle before the pointer exited event.
    ' Reset the dimensions on the Rectangle.
    If (Not (rect) Is Nothing) Then
        rect.Width = 200
        rect.Height = 100
    End If

End Sub

使用操作事件

如果你需要在应用中支持多个手指交互或使用速度数据的交互,则需要使用操作事件。你可以操作事件来检测诸如拖动、收缩和按住之类的交互。下表列出了使用 C++、C# 或 Visual Basic 的 Windows 应用商店应用中的操作事件和类。

事件或类描述
ManipulationStarting event首次创建操作处理器时发生。
ManipulationStarted event当输入设备在 UIElement 上开始操作时发生。
ManipulationDelta event当输入设备在操作期间更改位置时发生。
ManipulationInertiaStarting在操作过程中,当延迟开始时,如果输入设备与 UIElement 对象失去联系,则会发生。
ManipulationCompleted eventUIElement 上的操作和延迟完成时发生。
ManipulationStartingRoutedEventArgs提供 ManipulationStarting 事件的数据。
ManipulationStartedRoutedEventArgs提供 ManipulationStarted 事件的数据。
ManipulationDeltaRoutedEventArgs提供 ManipulationDelta 事件的数据。
ManipulationInertiaStartingRoutedEventArgs提供 ManipulationInertiaStarting 事件的数据。
ManipulationVelocities描述操作发生的速度。
ManipulationCompletedRoutedEventArgs提供 ManipulationCompleted 事件的数据。

 

使用 C++、C# 或 Visual Basic 的 Windows 应用商店应用中的手势由一系列操作事件组成。每个手势都从 ManipulationStarted 事件开始,如用户触摸屏幕时。接下来,引发一个或多个 ManipulationDelta 事件。例如,如果触摸屏幕,然后在屏幕上拖动手指,则会引发多个 ManipulationDelta 事件。最后,完成交互时引发 ManipulationCompleted 事件。

Note  如果你没有触摸屏监视器,则可以使用鼠标和鼠标滚轮界面在模拟器中测试你的操作事件代码。

以下示例显示如何使用 ManipulationDelta 事件来处理拖动交互。该示例创建可以在屏幕上拖动的 Rectangle

首先,采用 XAML 格式创建一个名为 TestRectangleRectangle,其中包含 200 个 HeightWidth

<Rectangle Name="TestRectangle"
  Width="200" Height="200" Fill="Blue" 
  ManipulationMode="All"/>

接下来,创建一个名为 dragTranslation 的全局 TranslateTransform,用于转换 Rectangle。向 Rectangle 中添加一个事件处理程序,以处理 ManipulationDelta 事件,并向 RectangleRenderTransform 中添加 dragTranslation。最后,在 ManipulationDelta 事件处理程序中,使用 Delta 属性上的 TranslateTransform 更新 Rectangle 的位置。

' Global Transform used to change the position of the Rectangle.
Dim dragTranslation As TranslateTransform

' Constructor
Public Sub New()

    InitializeComponent()

    ' Add handler for the ManipulationDelta event
    AddHandler TestRectangle.ManipulationDelta, 
        AddressOf Me.Drag_ManipulationDelta
    dragTranslation = New TranslateTransform
    TestRectangle.RenderTransform = Me.dragTranslation

End Sub

Private Sub Drag_ManipulationDelta(ByVal sender As Object, 
    ByVal e As ManipulationDeltaRoutedEventArgs)

    ' Move the rectangle.
    dragTranslation.X = (dragTranslation.X + e.Delta.Translation.X)
    dragTranslation.Y = (dragTranslation.Y + e.Delta.Translation.Y)

End Sub

UI 设计和触控输入

设计用户界面的方法可影响通过触控输入使用应用的难易程度。为了确保你的应用经过了触摸优化,请遵循下列指南:

  • 请务必调整鼠标指针和指尖之间的大小差异。触摸要求更大的 UI 元素以确保准确性,并防止手指遮住重要的信息。
  • 请始终为触摸交互提供即时、直接的视觉反馈。例如,你可以使用突出显示或工具提示来指示当前的触摸目标,防止意外激活其他目标。
  • 使用各种物理效果,如加速和惯性来在交互(如移动)中提供自然的感觉。
  • 使用捕捉点和其他限制来帮助将用户引导到最有用的状态。

有关与触摸相关的其他用户体验设计指南,请参阅用户交互指南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WCF、WPF、Silverlight和区别(转) SilverLight可以看作是WPF的一个简化版本,或者一个轻量版本。 SilverLight是基于浏览器插件的,在浏览器中运行,服务器端不需要部署任何环境,客户端只需要安装Runtime浏览器插件,无须安装.net Framework 3.0。所以,SilverLight的运行环境不受操作系统和浏览器的种类限制(更准确的说,是受到较少的限制)。 WPF可以编写Web程序或者桌面应用程序,可以直接编译为独立运行的.Exe文件。WPF运行时必须安装.net Framework 3.0。这就要求WPF目前运行的操作系统必须是Windows Vista或者Windows XP SP2。 此外,SilverLight作为WPF的一个轻量级的版本,比WPF削减了很多功能。 比如,WPF支持直接在XAML中绑定触发来触发动画,而SilverLight就只能通过托管代码或者Javascript来进行。 另外,WPF直接支持3D效果和3D镜头变换,但是SilverLight就不支持这个了。 Silverlight原名WPF/E 就是WPF Everywhere 是WPF的一个子集。 由于名称的关系, WPF与WPF/E一直被认为是类似的东西。 其实两者除了呈现UI的部分使用的是共通语言 XAML 之外,两者在本质上有很大的不同。甚至,XAML对WPF与Silverlight有不同的意义,也不能算是两者间"共通的语言。 XAML对WPF来说,是一种把.NET程序语言改用XML来描述的方式。换句话说,XAML用在WPF上,像是另外一种程序语言。与C#, VB , IronPython相似。所以XAML能做的, C# , VB一样都可以做到。但是反过来, C# , VB 能做的,XAML不一定能做到,因为XAML是为了配合开发工具,特别设计出来的一种语言,本身有他的局限性,所以还是得配合正规的程序语言,才能完成一个真正有用的程序。 但是以目前XAML所具备的能力,不靠C# , VB而做到平常简单Flash可以做到的,应该是没啥问题。因此, Application = Code + Markup的作者Petzold才会把这本书的结构写成先用以C#来写WPF程序,后半部才介绍XAML。 避免大家误解 WPF = XAMLXAML还可以用在WF上,所以并不局限于WPF。 如果用了XAML,以为这就是WPF的全部,就大错特错啰! 然而,XAML对Silverlight来说,本质比较贴近SVG。XAML用来描述构成画面的结构树,然后配合Javascript去操作这颗表示UI的树,以达到互动的效果。 所以对Silverlight来说, XAML像是用来扩充HTML/CSS原本不足的一组Tag。就像Firefox之中,一样可以用Javascript去操作SVG所描述的画面,藉以达成多媒体效果。 WCF,你就先把它想成Web Service的下一代也没什么问题。 WCF为Windows Communication Foundation,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。从功能的角度来看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WebService,MSMQ等技术的并集。 WPF是Windows Presentation Foundation,微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。 WPF相对于WinForm,将美工(控件样式设置)与实现(代码的业务实现)分开,是一种新的架构方式。 VS2008新特性是.Net Framework 3.5。
*** 注:由于该文件大于60MB,所以得分两个文件上传,敬请谅解!*** 基本信息 作 者:(美)威利斯,(美)纽萨姆 著,吴伟敏,李周芳 译 •出 版 社:清华大学出版社 •定价:78 •版 次:1 页 数:573 字 数:993000 •印刷时间:2011-11-1 开 本:16开 纸 张:胶版纸 •印 次:1 I S B N:9787302270058 包 装:平装 内容简介:   Visual Basic 2010是微软公司较为流行的VB.NET编程语言的最新版本,是Visual Studio 2010环境支持的几种语言之一。Visual Basic 2010的优势在于其易用性和高速度,利用该语言可以轻松、快捷地编写出Windows Forms应用程序、WPF Windows应用程序、Web应用程序、WPF Browser应用程序、移动设备应用程序和Web服务。   本书将全面介绍Visual Basic 2010的各种编程知识,展示如何创建上述应用程序和服务。同时,您也可以学习面向对象的编程技术,掌握创建业务对象和Windows控件的方法。   微软的.NET Framework使Visual Basic 2010程序员能像C#C++程序员一样创建完全面向对象的各种程序。.NET Framework提供了一套通用的基类,Visual Studio 2010中的所有编程语言都可以使用它们,这样一来,程序员在创建面向对象的程序方面就拥有与C#C++一样的功能了。   本书将使您在Visual Basic 2010编程方面打下坚实的基础,并给您带来编程的无限乐趣。   0.1 本书读者对象   本书的目的是教您如何尽可能快捷地运用Visual Basic 2010编写有用的程序。   本书适合于以下两类初学者:   ·一类是编程的初学者,他们选择从Visual Basic 2010开始学起。这是个很好的选择!Visual Basic 2010不但易学易用,而且功能强大。   ·另一类是曾用其他语言进行编程,但初次接触.NET编程知识的人员。这类初学者现在选择学习Visual Basic 2010是一个不错的主意。不管您熟悉的语言是Fortran还是VB 6,本书都将帮助您迅速掌握Visual Basic 2010。   0.2 本书主要内容   Visual Basic 2010提供了工具和语言方面的大量功能。当然,一本书不可能包含Visual Basic 2010的所有内容,这些内容要用一个书库来容纳。本书的目的是让您尽快入门,它相当于一个路标,可以指导您的学习。在介绍创建应用程序的基础知识(如创建窗口和控件,如何用代码处理突发事件,什么是面向对象的程序设计以及如何在应用程序中使用它,等等)之余,本书还为您提供了亲自动手的机会。本书的组织结构如下:  目录 第1章 初识visual basic 2010 1.1 事件驱动编程 1.2 安装visual basic 2010 1.3 visual basic 2010集成开发环境 1.4 创建简单的应用程序 1.5 使用帮助系统 1.6 小结 1.7 练习 第2章 .net framework概述 2.1 微软的信心来自于windows 2.2 为windows编写软件 2.3 公共语言运行时 2.4 通用类型系统和公共语言规范 2.5 小结 第3章 编写软件 第1章 初识visual basic 2010 1.1 事件驱动编程 1.2 安装visual basic 2010 1.3 visual basic 2010集成开发环境 1.4 创建简单的应用程序 1.5 使用帮助系统 1.6 小结 1.7 练习 第2章 .net framework概述 2.1 微软的信心来自于windows 2.2 为windows编写软件 2.3 公共语言运行时 2.4 通用类型系统和公共语言规范 2.5 小结 第3章 编写软件 3.1 信息和数据 3.2 变量 3.3 注释和空白 3.4 数据类型 3.5 存储变量 3.6 方法 3.7 小结 3.8 练习 第4章 流程控制 4.1 作出决策 4.2 if语句 4.3 select case语句 4.4 循环 4.5 小结 4.6 练习 第5章 处理数据结构 5.1 数组 5.2 枚举 5.3 常量 5.4 结构 5.5 数组列表 5.6 集合 5.7 使用散列表创建查询表 5.8 高级数组操作 5.9 小结 5.10 练习 第6章 可扩展应用程序标记语言(xaml) 第7章 构建windows应用程序 第8章 显示对话框 第9章 创建菜单 第10章 调试和错误处理 第11章 构建对象 第12章 面向对象的高级技术 第13章 建立类库 第14章 创建windows窗体用户控件 第15章 访问数据库 第16章 使用sql server和ado.net进行数据库编程 第17章 动态数据网站 第18章 asp.net 第19章 visual basic 2010和xml 第20章 部署应用程序 附录a 练习题答案 附录b 如何深入学习

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值