好的,基本答案就是使用:
Cursor.Clip = new Rectangle(x1, y1, x2, y2);
但我的问题有点复杂。
我需要它做的是正确地将自己映射到特定的窗口边界,以便触摸输入将被限制到该窗口,但是将自己正确地剪切到窗口,以便当我触摸左上角时在触摸屏的角落或右下角,它会将光标放在窗口的左上角或右下角。使用Cursor.Clip
将不会这样做,我触摸的所有内容都是在该剪切区域之外的触摸屏将被映射到窗口的最近边缘,而不是我触摸的位置。
是否有任何东西可以让我预先过滤鼠标位置,以便我可以正确调整它的界限?
或者,我可以尝试找到一些代码,将鼠标输入转换为 TUIO 输入并以此方式将其提供给应用程序,但我希望我不必这样做。因此,如果有人知道如何做到这一点,那么如果我的原始请求无法实现则会有所帮助。
如果您需要确切知道我为什么这样做,我基本上是尝试将视频输入的触摸屏中的鼠标事件输入到可以接收触摸输入的3D应用程序中(通过正常的鼠标事件或TUIO)将绘制到该视频,但无法最大化到屏幕的全分辨率,因为它只会渲染设置为输出的大小。
答案 0 :(得分:1)
您可以使用Reactive Extensions剪辑触摸事件
var movingEvents =
Observable.FromEventPattern<MouseEventHandler, MouseEventArgs>(
h => this.MouseMove += h, h => this.MouseMove -= h)
.Select(x => x.EventArgs.Location)
.Where(location =>
location.X >= viewPort.Location.X
&& location.X <= viewPort.Location.X + viewPort.Width
&& location.Y >= viewPort.Location.Y
&& location.Y <= viewPort.Location.Y + viewPort.Height);
movingEvents.Subscribe(update);
public void update(Point p)
{
textBox1.Text = p.ToString();
}
http://www.codeproject.com/Articles/52308/The-Rx-Framework-By-Example
答案 1 :(得分:0)
安装低级鼠标挂钩可能会有效,因为Windows 8之前的触摸屏通常会尽力伪装成鼠标。
参见例如http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C