gpt4 book ai didi

winforms - 两个连续的 KeyDown 事件之间的延迟很长

转载 作者:行者123 更新时间:2023-12-02 00:41:45 25 4
gpt4 key购买 nike

我正在编写一个小游戏引擎——纯粹是为了从内部了解它们的工作原理。我目前不想弄乱 OpenGL 或 DirectX,所以我坚持使用 GDI+ 和所有 WinForms 东西在控件上绘图。

显然,我需要处理输入。更具体地说,键盘事件。然而,这带来了一个问题:

protected override void OnKeyDown(KeyEventArgs e)
{
Trace.WriteLine(string.Format("KD {0:hh:MM:ss.fff} {1}",
DateTime.Now, e.KeyCode));
}

此代码(即使在控制面板的键盘小程序中设置了最短的重复延迟)产生以下结果:

KD 10:02:18.318 Right
KD 10:02:18.570 Right
KD 10:02:18.598 Right
KD 10:02:18.639 Right
KD 10:02:18.667 Right
KD 10:02:18.701 Right

如您所见,有 0.25 秒。前两个事件之间的延迟。很明显,这会导致屏幕上对象的移动缓慢:它首先稍微向右移动,然后暂停一段时间,然后继续。

我该如何解决这个问题?这可以在纯 WinForms 中完成,还是我应该使用 DirectInput(或者现在的 kosher 方式?)路线?

最佳答案

使用 Windows 消息并不是进行输入交互的最佳方式。
我对 WinForms 一无所知,但我假设在关键事件上使用消息。

我很多年前就用过 DirectInput (v7),它真的很快。
也许GetKeyboardStateGetAsyncKeyState在游戏循环中是很好的选择。

关于winforms - 两个连续的 KeyDown 事件之间的延迟很长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com