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

问题
-
下面是我的代码其中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
答案
-
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
-
据我所知,和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
全部回复
-
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
-
这个我设备供应商是韩国的,好像都没有什么合适的资料,然后我用英语联系了他们网站http://www.rndplus.com/ 上的的技术支持,也是石沉大海啊,感觉好像这个公司不存在一样。
难道这就是传说中的悲剧吗??
yulai -
确实难办,微软也很难做到。因为微软只是提供一个方式给到生厂商,或者大家都遵循某个标准,只有这样才能够保证正常的结果。从这个问题来看,微软不明确实及运行时具体是哪一个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.
-
据我所知,和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