我正在使用 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);
}
有人可以帮忙吗?谢谢!