我已经发布了另一个问题,即如何通过监控TouchDown事件触摸之间的时间间隔来"手动"捕获双击,但它非常错误.有没有人知道在多点触摸屏上捕获双击的标准Microsoft方式/事件?
非常感谢,
担
Jow*_*wen 10
我检查了水龙头位置和秒表的组合,它完美无缺!
private readonly Stopwatch _doubleTapStopwatch = new Stopwatch();
private Point _lastTapLocation;
public event EventHandler DoubleTouchDown;
protected virtual void OnDoubleTouchDown()
{
if (DoubleTouchDown != null)
DoubleTouchDown(this, EventArgs.Empty);
}
private bool IsDoubleTap(TouchEventArgs e)
{
Point currentTapPosition = e.GetTouchPoint(this).Position;
bool tapsAreCloseInDistance = currentTapPosition.GetDistanceTo(_lastTapLocation) < 40;
_lastTapLocation = currentTapPosition;
TimeSpan elapsed = _doubleTapStopwatch.Elapsed;
_doubleTapStopwatch.Restart();
bool tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.7));
return tapsAreCloseInDistance && tapsAreCloseInTime;
}
private void OnPreviewTouchDown(object sender, TouchEventArgs e)
{
if (IsDoubleTap(e))
OnDoubleTouchDown();
}
Run Code Online (Sandbox Code Playgroud)
它检查PreviewTouchDown是否为DoubleTap.