0

我正在尝试在 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. 即使我没有释放鼠标按钮。我可以通过调试输出来判断——在“Down”之后有“Up”。随后的笔画画得很好(如果有些滞后)。

还有其他人熟悉这个吗?那是仅限模拟器的事情,还是设备做同样的事情?

我在这里提到的 Stroke 类是对Polyline.

4

1 回答 1

1

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

于 2013-08-21T14:30:18.163 回答