我试图在我的桌面(有一个触摸屏显示器)上运行this program,在Visual Studio 2013中运行Windows Phone模拟器(模拟器8.1 WVGA 4英寸512 MB)。
现在我更改了MyIP_MouseLeftButtonDown和MyIP_MouseMove函数以输出一些调试数据,如下所示:
private void MyIP_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
MyIP.CaptureMouse();
StylusPointCollection MyStylusPointCollection = new StylusPointCollection();
MyStylusPointCollection.Add(e.StylusDevice.GetStylusPoints(MyIP));// MyIP is required here because it is the object with reference to which we get our stylus point's coordinates
NewStroke = new Stroke(MyStylusPointCollection);
Debug.WriteLine("Mouse Down"+MyStylusPointCollection.Count);
MyIP.Strokes.Add(NewStroke);
}
private void MyIP_MouseMove(object sender, MouseEventArgs e)
{
StylusPointCollection MyStylusPointCollection = new StylusPointCollection();
MyStylusPointCollection.Add(e.StylusDevice.GetStylusPoints(MyIP));
Debug.WriteLine("Mouse Move" + MyStylusPointCollection.Count);
if (NewStroke != null)
NewStroke.StylusPoints.Add(MyStylusPointCollection);
}
现在运行应用程序有两种情况:
当我用我的鼠标在画布上书写时,在第一个笔划中只捕获了一个点并且没有捕获到该动作。当释放鼠标按钮然后再次按下以启动第二个笔划时,整个笔划被捕获。输出和画布(附图)是:
鼠标Down1
鼠标Move1
鼠标Down1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
当我用手指在画布上书写时,捕获了整个第一个笔划,然后还捕获了第二个笔划。输出和画布(附图)是:
鼠标Down1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
Mouse Down1< --------第二次击球开始了
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
鼠标Move1
有人可以告诉我为什么鼠标无法正常工作吗?
答案 0 :(得分:0)
根据我对Ink的经验,似乎有时Move事件的到达速度不够快。这意味着如果没有报告累积的移动,鼠标焦点会丢失。例如:
鼠标Down1
鼠标Move1
... [鼠标移动]未报告,但积分累积...
使用上次报告的鼠标移动到丢失点的坐标不处理[鼠标丢失]。
您可以尝试添加LostMouseCapture事件监听器,在那里添加鼠标丢失的最后一个点/段吗?