我正在尝试编写一些代码,以允许用户在触摸屏上绘图。ManipulationDelta事件仅在通过阈值后触发
当使用GestureService或ManipulationStarted/Delta时,当用户开始移动手指时会出现“暂停” - 只有当手指离开始点足够远时,才会开始获取ManipulationDelta事件(就像我说的,对于GestureService也是如此)。
我能做些什么来避免这个阈值?它实际上不适合绘制代码。
我正在尝试编写一些代码,以允许用户在触摸屏上绘图。ManipulationDelta事件仅在通过阈值后触发
当使用GestureService或ManipulationStarted/Delta时,当用户开始移动手指时会出现“暂停” - 只有当手指离开始点足够远时,才会开始获取ManipulationDelta事件(就像我说的,对于GestureService也是如此)。
我能做些什么来避免这个阈值?它实际上不适合绘制代码。
刚才在AppHub论坛上发现了类似的问题,只是发表了博客。 https://invokeit.wordpress.com/2012/04/27/high-performance-touch-interface-wpdev-wp7dev/
操纵Delta和手势服务是高级别的触摸界面。如果您需要性能,请考虑使用低级别界面:Touch和一个名为TouchReported的事件。我倾向于在许多主要使用它们(绘图/位置检测)我的项目
要插上detech触摸事件的是
Touch.FrameReported += Touch_FrameReported;
你可以在Loaded事件做到这一点。以下是Touch_FrameReported处理程序的实现。 WorkArea是在这个画布。我也用它与WritableBitmap结合使用
private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
try
{
// Determine if finger/mouse is down
point = e.GetPrimaryTouchPoint(this.workArea);
if (point.Position.X < 0 || point.Position.Y < 0)
return;
if (point.Position.X > this.workArea.Width || point.Position.Y > this.workArea.Height)
return;
if (this.lbLetter.SelectedIndex == -1)
return;
switch (point.Action)
{
case TouchAction.Down:
draw = true;
old_point = point;
goto default;
case TouchAction.Up:
draw = false;
break;
default:
Draw();
break;
}
}
catch
{
MessageBox.Show("Application encountered error processing last request.");
}
}
这个工作比高级接口好得多。
您是否试过这里的示例:http://www.windowsphonegeek.com/tips/WP7-DrawingBoard-sample-Drawing--Ink--made-easy – 2012-04-27 08:35:39