与WPF相同Windows 8.1应用中也具有高级触控操作(Manipulation),其中包含了三种常见的触屏手势:平移、缩放、旋转,通过以下四种事件可为控件实现各种触控操作:ManipulationStarting、ManipulationStarted、ManipulationDelta、ManipulationInertiaStarting、ManipulationCompleted。

打开Visual Studio 2013 Preview,新建Windows Store应用。在XAML代码中添加Image控件,将ManipulationMode设置为ALL(也可按需要选择不同模式),并为其添加ManipulationStarting、ManipulationDelta、ManipulationCompleted事件,以便后续实现相关手势操作内容。RenderTransform中的CompositeTransform是一个控件变形组合,可容纳多种变形属性,如平移、旋转、缩放。

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">		
  <Canvas>
    <Image x:Name="imageElement" Source="images/cliff.jpg"
        Height="460" Width="758" Canvas.Left="300" Canvas.Top="150"
        ManipulationMode="All"
        ManipulationStarting="image_ManipulationStarting"
        ManipulationDelta="image_ManipulationDelta"
        ManipulationCompleted="image_ManipulationCompleted">
      <Image.RenderTransform>
        <CompositeTransform x:Name="imageCT"/>
      </Image.RenderTransform>
    </Image>
  </Canvas>
</Grid>

接下来,编写每个事件的具体内容,如下代码:

private void image_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
  e.Handled = true;
} private void image_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
  FrameworkElement element = e.OriginalSource as FrameworkElement;
  element.Opacity = 0.5;
  imageCT.TranslateX += e.Delta.Translation.X;
  imageCT.TranslateY += e.Delta.Translation.Y;
  imageCT.ScaleX *= e.Delta.Scale;
  imageCT.ScaleY *= e.Delta.Scale;
  imageCT.Rotation += e.Delta.Rotation;
}

private void image_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
  FrameworkElement element = e.OriginalSource as FrameworkElement;
  element.Opacity = 1;
}

这些代码很好理解,当ManipulationDelta触发后,首先将控件透明度设置为0.5,然后捕捉触控操作并对TranslateX、TranslateY(平移);ScaleX、ScaleY(缩放)、Rotation(旋转)进行修改。最后ManipulationCompleted结束后将控件透明度恢复即可。按下F5键看看效果如何。

Windows 8.1 应用开发 – 触控操作的更多相关文章

  1. 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控

    原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触 ...

  2. MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

    原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电 ...

  3. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇04:如何实现触控操作》

    4.如何实现触控操作 触控操作概述: 随着APPLE.Samsung.SONY等众多公司,将掌机.电脑和手机等产品在触控领域的不断探索,以触控为操作的机型越来越多的被投放到市场当中.触控游戏.触控软件 ...

  4. 【转】Unity 之 移动设备的触控操作

    http://blog.csdn.net/anyuanlzh/article/details/18367941 这篇博文将简单的记录,如何用unity处理在移动设备上的触控操作.    iOS和And ...

  5. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  6. amazeUI tab禁止左右滑动(触控操作)

    参考:http://amazeui.clouddeep.cn/javascript/tabs/ 效果: html: <!DOCTYPE html> <html> <hea ...

  7. Windows phone 8 学习笔记(1) 触控输入(转)

    Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此在输入方式上引入一套全新的触控操作方式,我们需要重新定义相关的事 ...

  8. Windows phone 8 学习笔记(1) 触控输入

    原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...

  9. Windows Phone 8.1开发:触控和指针事件2

    原文出自:http://www.bcmeng.com/windows-phone-touch1/ 请在此输入内容(想死啊,写了一个小时,直接没保存不小心删掉了.那就简单说说吧)Pointer事件有以下 ...

随机推荐

  1. 2.1 CMMI2级——7个PA简述

    摘要: 阶段式的CMMI没有1级,最开始的级别就是2级.一个处于“无序化”生产的软件公司,要进行过程改进,首要是改进什么呢?2级告诉你,我们需要从计划.计划跟踪.需求管理.采购.度量.配置管理.质量保 ...

  2. 入CTF坑必不可少的地方-保持更新

    0x00 前言 没有交易,没有买卖,没有排名,纯属分享:p 0x01 CTF介绍 CTF领域指南CTF介绍大全CTF赛事预告 0x02 CTF练习 BIN:reversingpwnableexploi ...

  3. numpy函数fromfunction分析

    从函数规则创建数组是非常方便的方法.在numpy中我们常用fromfunction函数来实现这个功能. 在numpy的官网有这么一个例子. >>> def f(x,y): ... r ...

  4. Oracle SQL Developer如何配置TNS

    安装了ORACLE的SQL Developer 4.0.3.16,但是连接数据库时,如果选择连接类型为"TNS",无法获取网络别名,那么要如何设置,才能访问到TNS文件呢? 此时需 ...

  5. Access字段类型“查阅向导”

    1.显示控件有:“列表框”和“组合框”两种 2.组合框:第一个字段为“填充字段” 3.通过查阅向导建立的会自动添加“关系”(外键),因此在删除或修改字段时需要先删除二者关系,最好不通过“查阅向导”建立 ...

  6. SQL Server 2012 学习笔记5

    1. 索引(Index) 索引是快速的定位和查找数据.索引分为: 聚集索引:唯一,默认主键,一般选取比较连贯的字段,聚集索引是物理排序. 非聚集索引: 并没有把数据物理排序,只是多了一个索引页(包括索 ...

  7. MYSQL 5.7 添加新用户

    错误描述: 添加用户 insert into mysql.user(Host,User,Password) values("localhost","test", ...

  8. keepalived高可用反向代理的nginx

    实验系统: (1)CentOS 6.6_x86_64: (2)共有三台主机,本实验以ip地址来命名主机,即131主机.132主机.133主机. 实验前提:防火墙和selinux都关闭,主机之间时间同步 ...

  9. sql查询一天内的where写法,sql写法

    sql查询一天内的写法: 1. where createtime BETWEEN (select date_format(now(),'%Y-%m-%d 00:00:00')) and (select ...

  10. Redhat Linux 修改主机名(HOSTNAME)

    hostname #查看当前主机的主机名hostname NEWHOSTNAME #临时修改当前主机名 修改主机名vi /etc/sysconfig/network #通过配置文件修改主机名NETWO ...