2

我正在使用 Surface SDK 和 .NET 4.0 编写程序。我必须区分多点触控事件,但我无法区分手势。

用两根手指我希望能够缩放和旋转,但由于通常手指不会在屏幕上以直线或正圆移动,因此结果是缩放和旋转的组合。有人可以指出如何克服这个问题吗?我正在使用一些阈值来忽略小偏差,但是这些阈值需要手动调整,我找不到合适的值。

我在想我可以检测onManipulationStarting方法中的手势类型并忽略其余的手势,但有时手势可以从屏幕上的一根手指开始,我正在识别错误​​的手势。

我在下面包含一些代码:

private void OnManipulationDeltaHandler(object sender, ManipulationDeltaEventArgs mdea)
    {
         var zoomAmount = Math.Abs(mdea.DeltaManipulation.Scale.Length - Math.Sqrt(2));
                // ZOOM ACTION: 2 fingers and scaling bigger than a threshold
                if ((TouchesOver.Count() == 2) && (zoomAmount > scaleThreshold))
                {
                    if (ZoomCommand != null)
                    {
                       if (Math.Abs(zoomAmount - 0) > 0.1)
                        {
                            ZoomCommand.Execute((-zoomAmount).ToString());
                        }
                    }
                }
                else
                {
                    var rotateAmount = -mdea.DeltaManipulation.Rotation;
                    if ((TouchesOver.Count() == 2))
                    {
                        headValue += rotateAmount;
                        if (HeadRotationCommand != null)
                        {
                            HeadRotationCommand.Execute(new Orientation(pitchValue, headValue, rotateAmount));
                        }
                    }
                }               

        mdea.Handled = true;
        base.OnManipulationDelta(mdea);
   }

有人可以帮忙吗?谢谢!

4

0 回答 0