我正在尝试在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
上的一个瘦包装。
答案 0 :(得分:1)
我在模拟器上遇到了相同的行为。但是在真实设备上它可以正常工作(您可以在真实设备上进行测试http://rda.cellulardata.com/devices)