Opentk 3.0 GameWindow.Mouse的鼠标位置参数变化

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就不再有反应了,取值为移动到边界时的值。

而后者,即使移动到标题栏范围,鼠标位置依然会变化,基本无法完全模拟,除非采用很低效的方法。这点区别,或许是可以容忍的。因为游戏大多是全屏。

猜你喜欢

转载自www.cnblogs.com/mooniscrazy/p/11235501.html