Wpf 为曲面控件的OnContactDown事件添加延迟

Wpf 为曲面控件的OnContactDown事件添加延迟,wpf,pixelsense,routedevent,Wpf,Pixelsense,Routedevent,我们使用Controls.PreviewContactDown、PreviewContactUp和PreviewContactChanged事件捕获在曲面上放置、移除和移动的标记项,这在曲面附带的模拟器应用程序中非常有效 在实际曲面上,如果移动标记的项目太快,相机实际上会失去标记的焦点,假设它已被移除,然后在停止移动时重新捕获。这给我们的客户带来了非常糟糕的体验 我建议的是一种重写或创建新事件的方法,该事件将响应标记的项事件,但在延迟之后才触发事件处理程序。。。i、 e.如果触发“Contact

我们使用Controls.PreviewContactDown、PreviewContactUp和PreviewContactChanged事件捕获在曲面上放置、移除和移动的标记项,这在曲面附带的模拟器应用程序中非常有效

在实际曲面上,如果移动标记的项目太快,相机实际上会失去标记的焦点,假设它已被移除,然后在停止移动时重新捕获。这给我们的客户带来了非常糟糕的体验

我建议的是一种重写或创建新事件的方法,该事件将响应标记的项事件,但在延迟之后才触发事件处理程序。。。i、 e.如果触发“ContactUp”,等待100毫秒,然后执行事件处理程序。理想情况下,我们只需要使用一个备用的附加属性来定义这些事件处理程序,即

<Panel local:TagDown="TagDownEventHandler" />  


如果我们能让它使用ICommand对象而不是事件处理程序,那就更好了。

使用TagVisualizer怎么样?在视觉效果从屏幕上移除之前,它已经通过为您提供默认淡出动画来处理标记丢失/找到


用手指做同样的事情比较困难,因为一旦失去接触,原始接触和新接触之间就没有连接。

使用TagVisualizer怎么样?在视觉效果从屏幕上移除之前,它已经通过为您提供默认淡出动画来处理标记丢失/找到


用手指做同样的事情很难,因为一旦失去接触,原始接触和新接触之间就没有联系。

我们在真实表面和接触事件中发现了同样的情况

我们所做的(这将取决于您的需要)是为“联系人容器”创建一个基类,它有自己的处理ContactUp的方法,我们使用一组EventArg启动计时器,其中包含要删除的对象/标记,并将其添加到列表中。如果计时器滴答作响,那么我们将从容器和队列列表中删除对象/标记

当contactDown触发时,我们确认队列中没有匹配的对象,如果有,我们停止计时器并将其从队列中移除,忽略新标记,因为它仍然在容器中。如果没有,我们将处理放置的新标签

我们仍在调整代码以确保其健壮性,一旦可以,我将在Codeplex上发布解决方案


HTH

我们在真实表面和接触事件中发现了相同的东西

我们所做的(这将取决于您的需要)是为“联系人容器”创建一个基类,它有自己的处理ContactUp的方法,我们使用一组EventArg启动计时器,其中包含要删除的对象/标记,并将其添加到列表中。如果计时器滴答作响,那么我们将从容器和队列列表中删除对象/标记

当contactDown触发时,我们确认队列中没有匹配的对象,如果有,我们停止计时器并将其从队列中移除,忽略新标记,因为它仍然在容器中。如果没有,我们将处理放置的新标签

我们仍在调整代码以确保其健壮性,一旦可以,我将在Codeplex上发布解决方案


HTH

TagVisualizer不会那么容易工作,因为我们不知道我们使用的是什么标签,我很确定TagVisualizer要求您指定要侦听的标签值-客户端可能使用00-FF标签的任何子集。同时,TagVisualizer实际上可能会遇到同样的问题-在我们的Dev surface单元上发生的情况是,如果你以任何合适的速度“拖动”一个标记对象穿过表面,它实际上会丢失对该对象的跟踪-我认为这更像是内部摄像头的硬件限制,而不是其他任何东西。如果你不知道是什么标记,那么,把所有的都匹配起来(你也可以通过编程来实现这一点)怎么样?问题解决了。是的,触点脱落是一个基本问题。。。但正如我所说的,电视之所以能绕过它,是因为它不会立即移除视觉效果,因此,如果它在移动时失去联系,它会在重新检测后平滑地跟踪回去。TagVisualizer不会那么容易工作,因为我们不明确知道我们使用的是什么标签,我很确定TagVisualizer需要您指定要侦听的标记值-客户端可以使用00-FF标记的任何子集。同时,TagVisualizer实际上可能会遇到同样的问题-在我们的Dev surface单元上发生的情况是,如果你以任何合适的速度“拖动”一个标记对象穿过表面,它实际上会丢失对该对象的跟踪-我认为这更像是内部摄像头的硬件限制,而不是其他任何东西。如果你不知道是什么标记,那么,把所有的都匹配起来(你也可以通过编程来实现这一点)怎么样?问题解决了。是的,触点脱落是一个基本问题。。。但正如我所说的,电视之所以能绕过它,是因为它不会立即消除视觉效果,所以如果它在移动时失去了联系,它会在重新检测后平滑地跟踪回去。