意外操纵完成,第一次冲程缩短

时间:2013-08-14 18:29:50

标签: c# silverlight windows-phone-8 windows-phone

我正在尝试在Canvas派生类上实现徒手画。我已经为ManipulationXXX事件实现了处理程序,它们是这样的:

private void OnManipulationStarted(object o, ManipulationStartedEventArgs a)
{
    Point pt = GetManPoint(a.ManipulationOrigin, a.ManipulationContainer);
    Debug.WriteLine("Down at {0},{1}", pt.X, pt.Y);
    m_Strokes.Add(m_Stroke = new Stroke(pt, this));
    CaptureMouse();
    a.Handled = true;
}

private void OnManipulationDelta(object o, ManipulationDeltaEventArgs a)
{
    if (m_Stroke != null)
    {
        Point pt = GetManPoint(a.ManipulationOrigin, a.ManipulationContainer);
        Debug.WriteLine("Delta at {0},{1}", pt.X, pt.Y);
        m_Stroke.AddPoint(pt);
        a.Handled = true;
    }
}

private void OnManipulationCompleted(object o, ManipulationCompletedEventArgs a)
{
    if (m_Stroke != null)
    {
        Debug.WriteLine("Up");
        ReleaseMouseCapture();
        Point[] Pts = m_Stroke.Points;
        m_Stroke = null;
        a.Handled = true;
    }
}

没有试过实际设备,但在模拟器上,有一个持久性问题。对于中风的第一次尝试,在ManipulationCompleted之后立即触发ManipulationStarted事件。即使我没有释放鼠标按钮。我可以通过调试输出来判断 - 在“向下”之后有“向上”。随后的笔画很好(如果有点滞后)。

其他人都熟悉这个吗?这只是一个模拟器,还是设备也这样做?

我在这里提到的Stroke类是Polyline上的一个瘦包装。

1 个答案:

答案 0 :(得分:1)

我在模拟器上遇到了相同的行为。但是在真实设备上它可以正常工作(您可以在真实设备上进行测试http://rda.cellulardata.com/devices