Opentk 2.0的GameWindow有个Mouse属性,通过Mouse属性可以访问Mouse的位置。到了3.0,这个属性没有了。
经研究,GameWindow.Mouse.Position跟GameWindow的MouseMove事件中的Position完全相同。但是这个只能在GameWindow的继承类中使用,并不方便。
如果要实现跟2.0类似的功能,可以通过Mouse类来取得鼠标的绝对位置,然后通过GameWindow.PointToClient函数转换。这样基本可以实现跟2.0类似的功能。但是仍然稍有不同。
GameWindows.Mouse.Position的取值范围,不会超过窗口的大小,最小值是0,最大值是窗口的宽和高。
如果通过截断,可以基本跟2.0接近了,但还是有些地方无法完全相同。
windows模式下的窗口是带标题栏的。如果鼠标移动到标题栏,GameWindow.Mouse.Position就不再有反应了,取值为移动到边界时的值。
而后者,即使移动到标题栏范围,鼠标位置依然会变化,基本无法完全模拟,除非采用很低效的方法。这点区别,或许是可以容忍的。因为游戏大多是全屏。