原文:windows phone (17) ManipulationDelta事件

ManipulationDelta事件会是在触摸位置发生变化是引发,比如可以根据用户在触摸屏中移动的位置,图片发生相应的位移,根据客户两手指在触摸屏上的位置,进行图片的放大缩小;这里用到的案例就是对图片实现位移和缩放;

MainPage.xaml主要代码:

 <!--ContentPanel - 在此处放置其他内容-->        <Grid x:Name="ContentPanel" Grid.Row="" Margin="12,0,12,0">            <Image Source="1.jpg" x:Name="imgScale" Width="" Height=""  ManipulationDelta="imgScale_ManipulationDelta" >                           </Image>        </Grid>

效果:

从上面可以看到我们引用了一张图片,并设置了ManipulationDelta事件,该事件的实现是:

  private void imgScale_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
        {
            Image els = sender as Image;
            CompositeTransform ct = new CompositeTransform();
            ct.TranslateX = ;
           
         
            if (e.DeltaManipulation.Scale.X!=||e.DeltaManipulation.Scale.Y!=)
            {
                double maxOne = Math.Max(e.DeltaManipulation.Scale.Y, e.DeltaManipulation.Scale.X);
                ct.ScaleX *= maxOne;
                ct.ScaleY *= maxOne;

            }
            //e.IsInertial
            
            this.PageTitle.Text = "移动,X:" + e.ManipulationOrigin.X.ToString() + "\nY:" + e.ManipulationOrigin.Y.ToString();
            ct.TranslateX = e.DeltaManipulation.Translation.X;
            ct.TranslateY = e.DeltaManipulation.Translation.Y;
            els.RenderTransform = ct;
            e.Handled = true;
        }

上述代码的藐视:获得xaml中已经实例的Ellipse对象,并实例化一个新的CompositeTransform对象,判断缩放的比例是否为空,如果不为空,判断在X轴和Y轴哪个比例较大,取较大者作为缩放比例,然后实现相应的位移;这里用到的几个知识点是:

sender as [元素类] 获得发生该事件的元素
e.DeltaManipulation 获得最近发生的更改
e.DeltaManipulation.Scale 官方:获取操作已调整的作为乘数的量 (我的理解:获取移动的值并作为放大缩小的比例值),可继续点出对应的X,Y值

e.DeltaManipulation.Translation 获取通过触摸移动的尺寸,可继续点出对应的X,Y值

e.ManipulationOrigin 获得操作的起始点,可继续点出对应的X,Y值

e.IsInertial 获取是否在惯性运动期间发生 ManipulationDelta 事件,在上一篇中介绍到变换,你会发现很多文字都会超出文本所能承受的区域,此时就可以判断文字的变换效果十分超出现实区域,如果超过,则e.complete(); 结束该触摸事件

e.CumulativeManipulation 获取累计的操作更改,类似于历史记录

e.ManipulationContainer  获取定义操作坐标的容器,和sender as [元素类] 比如上列代码的容器是Image

如果鼠标进行模拟,做水平向右移动,则效果是:

源码 :files.cnblogs.com/shenzhoulong/ManipulationDelta.rar

windows phone (17) ManipulationDelta事件的更多相关文章

  1. 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)

    [源码下载] 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果) 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTrans ...

  2. 不可或缺 Windows Native (17) - C++: 类与对象

    [源码下载] 不可或缺 Windows Native (17) - C++: 类与对象 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 类与对象 示例1.类的设计CppE ...

  3. 与众不同 windows phone (17) - Graphic and Animation(画图和动画)

    原文:与众不同 windows phone (17) - Graphic and Animation(画图和动画) [索引页][源码下载] 与众不同 windows phone (17) - Grap ...

  4. Windows 窗体中的事件顺序

    来自:https://docs.microsoft.com/zh-cn/dotnet/framework/winforms/order-of-events-in-windows-forms 对于依次处 ...

  5. Windows API——CREATEEVENT——创建事件

    事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象.事件告诉线程何时去执行某一给定的任务,从而使多个线程流平滑 CreateEvent是创建windows事件的意思,作用主要用在判断线 ...

  6. Windows 窗体中的事件顺序(WinForm)

    引用MSDN,以便以后查看 引用:https://msdn.microsoft.com/zh-cn/library/86faxx0d.aspx 应用程序启动和关闭事件  Form 和 Control  ...

  7. Azure 元数据服务:适用于 Windows VM 的计划事件(预览)

    计划事件是 Azure 元数据服务中的其中一个子服务. 它负责显示有关即将发生的事件(例如,重新启动)的信息,使应用程序可以为其做准备并限制中断. 它可用于所有 Azure 虚拟机类型(包括 PaaS ...

  8. 比较windows phone 的回退事件与android的回退事件

    public void onBackPressed() { finish(); } 如果要做一个页面导航的功能的话,就我而言,认为,windows phone开发比android更加人性化,更加傻瓜化 ...

  9. Windows API—CreateEvent—创建事件

    事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象.事件告诉线程何时去执行某一给定的任务,从而使多个线程流平滑,CreateEvent是创建windows事件的意思,作用主要用在判断线 ...

随机推荐

  1. 禁用viewstate

    <asp:Dropdownlist/>禁用viewstate以后 public partial class _Default : System.Web.UI.Page     {      ...

  2. HDU 4857 (反向拓扑排序 + 优先队列)

    题意:有N个人,M个优先级a,b表示a优先于b.而且每一个人有个编号的优先级.输出顺序. 思路来自:与PKU3687一样 在主要的拓扑排序的基础上又添加了一个要求:编号最小的节点要尽量排在前面:在满足 ...

  3. 写给C语言新手的话

    首先声明啊,写这个是因为一些加我QQ的朋友问我学习经验,我才写的. 另外,如果是二级党,那么请用谭浩强老师的书.然后你就可以不用看了.倒不是有偏见,而是我写的这个东西,根本不是为了考试,而是为了和新手 ...

  4. C/C++中constkeyword

    今天在做一个趋势笔试题的时候.才让我有了系统把constkeyword好好总结一下的冲动,由于这个关键词大大小小好多地方都出现过,出现频率很高,而每次仅仅是简短的把答案看了一下,没有真正将其整个使用方 ...

  5. 爬虫总结_python

    import sqlite3 Python 的一个非常大的优点是很容易写很容易跑起来,缺点就是很多不那么著名的(甚至一些著名的)程序和库都不像 C 和 C++ 那边那样专业.可靠(当然这也有动态类型 ...

  6. Android Studio IDE Out of Memory

    场景: 尝试过各种方式,IDE重装,重新启动,设置IDE MEMORY大小JDK MEMORY大小都无效 终于在FILE->INVALIDATE CACHES/RESTART 中点击重新启动之后 ...

  7. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置         你应该熟悉(假设还咩有)的SharePo ...

  8. HDU 1498 50 years, 50 colors(最小点覆盖,坑称号)

    50 years, 50 colors Problem Description On Octorber 21st, HDU 50-year-celebration, 50-color balloons ...

  9. ipv6加英文的中括号访问

    加英文的中括号就可以,如[2001:4998:c:e33::1004],我发现这是yahoo首页.但并不是所有IPv6网站都可以通过IPv6地址访问,跟IPv4一样,网站服务器端可以只绑定域名,不接受 ...

  10. Mars之android的Handler(2)

    handler .looper.messageque的关系在前面已经有个介绍,但前面handler(1)中handler的使用是极少的一种情况,因为handler.sendMessage()可以在Ma ...