意外操作完成,第一笔绘图被缩短
本文关键字:一笔 绘图 操作 意外 | 更新日期: 2023-09-27 18:27:38
我正在尝试在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
上的一个薄包装器。
我在模拟器上经历了同样的行为。但在真实的设备上,它可以毫无问题地工作(你可以在这里测试真实的设备http://rda.cellulardata.com/devices)