none
WPF 程序触摸屏 Touch坐标为-500000000左右,怎么办啊,我想要把它弄成正常的坐标啊,求帮助! RRS feed

  • 问题

  • 下面是我的代码其中TOUCHPAD是CANVAS【我用的触摸屏设备是:PULSE IR的】

      private void touchPad_TouchDown(object sender, TouchEventArgs e)
    
      {
    
       Ellipse ellipse = new Ellipse();
    
       ellipse.Width = 30;
    
       ellipse.Height = 30;
    
       ellipse.Stroke = Brushes.White;
    
       ellipse.Fill = new SolidColorBrush(
    
        Color.FromRgb(
    
         (byte)rd.Next(0, 255),
    
         (byte)rd.Next(0, 255),
    
         (byte)rd.Next(0, 255))
    
         );
    
    
    
       TouchPoint touchPoint = e.GetTouchPoint(touchPad);
    
       MessageBox.Show(touchPoint.Bounds.Top + "," + touchPoint.Bounds.Left);
    
       Canvas.SetTop(ellipse, touchPoint.Bounds.Top);
    
       Canvas.SetLeft(ellipse, touchPoint.Bounds.Left);
    
    
    
       movingEllipses[e.TouchDevice.Id] = ellipse;
    
    
    
       touchPad.Children.Add(ellipse);
    
      }
    
    

    弹出的消息框怎么发现坐标是-500000000左右的数据呢   我想要把它弄成正常的坐标啊,求帮助!
     


    yulai
    2011年7月14日 7:11

答案

  • TouchPoint.Bounds是手指触屏区域的边界,http://msdn.microsoft.com/zh-cn/library/system.windows.input.touchpoint.aspx 这个TouchPoint其实是由你的Touch设备调用返回的。所以他的值这么奇怪,你应该参考下你的设备的开发文档。每个Touch设备在WPF中应该会被实例化成一个 TouchDevice 对象,这个对象自己提供了一个 GetTouchPoint(IInputElement relativeTo);  方法来获得当前触摸点信息。

    本身 TouchDevice 只提供一个虚方法,所以这个方法的实现是各自具体 TouchDevice 本身实现的。

    public abstract class TouchDevice : InputDevice, IManipulator
    {
      ...
      public abstract TouchPoint GetTouchPoint(IInputElement relativeTo);
      ...
    }
    

    请详细咨询你的设备供应商。http://www.rndplus.com/

     

    Sincerely,

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 hangyulai 2011年7月18日 2:44
    2011年7月15日 6:06
    版主
  • 据我所知,和TUIO没有关系,Windows把消息发送给硬件,是通过驱动的。然后硬件返回相应结果也是通过驱动进行翻译解析的,不同的硬件通过硬件 最后给到Windows一个标准的结果,所以Windows才能够对很多硬件进行识别和操作。

    你试试有没有官方的其他硬件驱动或者第三方的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 hangyulai 2011年7月18日 2:44
    2011年7月18日 2:16
    版主

全部回复

  • TouchPoint.Bounds是手指触屏区域的边界,http://msdn.microsoft.com/zh-cn/library/system.windows.input.touchpoint.aspx 这个TouchPoint其实是由你的Touch设备调用返回的。所以他的值这么奇怪,你应该参考下你的设备的开发文档。每个Touch设备在WPF中应该会被实例化成一个 TouchDevice 对象,这个对象自己提供了一个 GetTouchPoint(IInputElement relativeTo);  方法来获得当前触摸点信息。

    本身 TouchDevice 只提供一个虚方法,所以这个方法的实现是各自具体 TouchDevice 本身实现的。

    public abstract class TouchDevice : InputDevice, IManipulator
    {
      ...
      public abstract TouchPoint GetTouchPoint(IInputElement relativeTo);
      ...
    }
    

    请详细咨询你的设备供应商。http://www.rndplus.com/

     

    Sincerely,

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 hangyulai 2011年7月18日 2:44
    2011年7月15日 6:06
    版主
  • 这个我设备供应商是韩国的,好像都没有什么合适的资料,然后我用英语联系了他们网站http://www.rndplus.com/ 上的的技术支持,也是石沉大海啊,感觉好像这个公司不存在一样。

     

    难道这就是传说中的悲剧吗??

     


    yulai
    2011年7月15日 8:53
  • 确实难办,微软也很难做到。因为微软只是提供一个方式给到生厂商,或者大家都遵循某个标准,只有这样才能够保证正常的结果。从这个问题来看,微软不明确实及运行时具体是哪一个TouchDevice对象被创建使用。这个只能由供应商来解答。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年7月15日 9:25
    版主
  • 因为这里我操作界面上的东西一切正常,只是调用WPF的获取触控点方法是这个情况 这种情况会不会和驱动程序有关系呢,是不是我到网络上找个其他的驱动就会好了呢? 还有看到好多TUIO这里的说法,这个情况和这个TUIO有关系吗
    yulai
    2011年7月15日 14:19
  • 据我所知,和TUIO没有关系,Windows把消息发送给硬件,是通过驱动的。然后硬件返回相应结果也是通过驱动进行翻译解析的,不同的硬件通过硬件 最后给到Windows一个标准的结果,所以Windows才能够对很多硬件进行识别和操作。

    你试试有没有官方的其他硬件驱动或者第三方的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 hangyulai 2011年7月18日 2:44
    2011年7月18日 2:16
    版主
  • 好的感谢啊


    yulai
    2011年7月18日 2:44