在Windows Silverlight 8.1应用程序中着墨

时间:2014-05-15 16:20:29

标签: silverlight windows-phone mouseevent windows-phone-8-emulator

我试图在我的桌面(有一个触摸屏显示器)上运行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);
        }

现在运行应用程序有两种情况:

  1. 当我用我的鼠标在画布上书写时,在第一个笔划中只捕获了一个点并且没有捕获到该动作。当释放鼠标按钮然后再次按下以启动第二个笔划时,整个笔划被捕获。输出和画布(附图)是:

    鼠标Down1
    鼠标Move1
    鼠标Down1
    鼠标Move1
    鼠标Move1
    鼠标Move1
    鼠标Move1
    鼠标Move1
    鼠标Move1
    鼠标Move1
    鼠标Move1
    enter image description here

  2. 当我用手指在画布上书写时,捕获了整个第一个笔划,然后还捕获了第二个笔划。输出和画布(附图)是:

    鼠标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
    enter image description here

  3. 有人可以告诉我为什么鼠标无法正常工作吗?

1 个答案:

答案 0 :(得分:0)

根据我对Ink的经验,似乎有时Move事件的到达速度不够快。这意味着如果没有报告累积的移动,鼠标焦点会丢失。例如:

鼠标Down1
鼠标Move1
... [鼠标移动]未报告,但积分累积...
使用上次报告的鼠标移动到丢失点的坐标不处理[鼠标丢失]。

您可以尝试添加LostMouseCapture事件监听器,在那里添加鼠标丢失的最后一个点/段吗?