首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在中将两个手势与同时执行的手势分开

在中将两个手势与同时执行的手势分开
EN

Stack Overflow用户
提问于 2014-01-10 00:54:42
回答 2查看 400关注 0票数 0

Windows 8.1存储应用程序中的手势操作确实有问题,我正在构建一个实现两个手势的应用程序:

  1. 点到缩放。
  2. 刷卡。

对于缩放,我使用ManipulationStarted -> ManipulationDelta -> ManipulationCompleted

对于刷卡,我使用PointerPressed -> PointerMoved -> PointerReleased

问题是,当ManipulationStarted在尝试执行PinchToZoom操作时触发时,PointerPressed事件也会触发!因为另一个手势也要表演!

我可以找出最好的方式把这些和手势分开,做手势的最佳实践是什么,我应该缺少一些关于手势机制的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-13 18:11:52

您可以使用OnManipulationDelta方法进行缩放和滑动。

XAML

代码语言:javascript
复制
<Canvas >
  <Image  ManipulationMode='All'
          Source='Assets/grapes.png'
          Canvas.Top='79'
          Canvas.Left='107'>
    <Image.RenderTransform>
       <CompositeTransform  />
    </Image.RenderTransform>
  </Image>

  <Image  ManipulationMode='All'
          Source='Assets/grapesBW.png'
          Canvas.Top='79'
          Canvas.Left='461'>
    <Image.RenderTransform>
    <CompositeTransform />
   </Image.RenderTransform>
</Image>
<Rectangle Fill='#7FFFAAAB'
           Height='100'
           Canvas.Left='107'
           Stroke='Black'
           Canvas.Top='335'
           Width='300' />
<Rectangle Fill='#7F738D01'
           Height='100'
           Canvas.Left='461'
           Stroke='Black'
           Canvas.Top='335'
           Width='300' />
</Canvas>

代码语言:javascript
复制
// override the OnManipulationDelta method, instead of setting up event procedures

protected override void OnManipulationDelta(ManipulationDeltaRoutedEventArgs args)
{
    // All the Image elements have ManipulationMode = All enabled
    // The other elements on the page have manipulations disabled
    // therefore the OriginalSource can only be an image, no need to test for null

    var currentImage = args.OriginalSource as Image;
    var transform = currentImage.RenderTransform as CompositeTransform;

    transform.TranslateX += args.Delta.Translation.X;
    transform.TranslateY += args.Delta.Translation.Y;

    transform.ScaleX *= args.Delta.Scale;
    transform.ScaleY *= args.Delta.Scale;

    transform.Rotation += args.Delta.Rotation;

base.OnManipulationDelta(args);

}

票数 3
EN

Stack Overflow用户

发布于 2014-01-12 07:51:45

由于您没有提供代码,我猜您是如何实现操作事件的。

如果您使用的是GestureRecognizer类,它还可以使用拖放事件处理程序跟踪滑动。

GestureRecognizer知道用户当前表示的手势类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21034334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档