我的问题
好的,对此的基本答案是使用:
Cursor.Clip = new Rectangle(x1, y1, x2, y2);
但我的问题有点复杂。
我需要它做的是正确地将自己映射到特定的窗口边界,这样触摸输入将被限制在那个窗口,但会正确地将自己剪裁到窗口,这样当我触摸左上角时触摸屏的一角或右下角,它会将光标放在窗口的左上角或右下角。使用 Cursor.Clip
不会这样做,并且我在触摸屏上触摸的所有超出该剪辑区域的内容都会映射到离我触摸的位置最近的窗口边缘。
有什么可以让我预过滤鼠标位置以便正确调整它的边界吗?
如果其他都失败了
或者,我可以尝试找到一些代码,将鼠标输入转换为 TUIO 输入,并以此方式将其输入到应用程序中,但我希望我不必那样做。因此,如果有人知道我该怎么做,那将有助于解决我最初的请求无法实现的情况。
对于那些想确切地知道我在做什么的人
如果您需要确切地知道我为什么这样做,我基本上是在尝试将鼠标事件从视频中输入的触摸屏输入到可以接受触摸输入的 3D 应用程序(通过普通鼠标事件或 TUIO)它将绘制到该视频,但无法最大化屏幕的全分辨率,因为它只会渲染设置为输出的大小。
明确
- 我不介意普通鼠标被这些干扰。
- 我说的是使用默认 Windows 7 Touch 的 Windows 7 系统
- 输入是通过 USB 输入的,而不是串行或类似的东西。
最佳答案
你可以使用 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
关于c# - 从触摸屏重定向/重新映射/预过滤光标输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581721/