gpt4 book ai didi

java - 调整大小后如何使用 LWJGL3 将 LibGDX 中的窗口居中

转载 作者:行者123 更新时间:2023-11-30 02:20:37 29 4
gpt4 key购买 nike

我有一个未装饰的窗口,需要居中,使用以下配置:

Lwjgl3ApplicationConfiguration configuration = Lwjgl3ApplicationConfiguration()
configuration.setIdleFPS(60)
configuration.setBackBufferConfig(8,8,8,8,16,0,0)
configuration.setWindowedMode(1920,1080)
configuration.setTitle("Title")
configuration.setDecorated(false)
configuration.setResizable(false)

稍后,在应用程序中,您可以通过选项更改窗口的大小,并使用从特定宽高比定义的预设。调整大小是通过以下调用进行的:

Gdx.graphics.setWindowedMode(width, height)

这似乎使窗口保持在其原始的左上角位置(可以位于屏幕上的随机位置),但我希望它在显示器上居中,或者是一种将窗口移动到任何所需位置的方法随意。

问题:当使用 SetWindowedMode() 更改窗口大小时,如何使 LibGDX 使用 LWJGL3Application 创建的窗口保持居中

最佳答案

@Tenfour04 在回应下面的旧答案时表示,您可以使用以下方法获取 LWJGL3Window 实例

Lwjgl3Window window = ((Lwjgl3Graphics)Gdx.graphics).getWindow();

然后,您可以使用它来设置调整大小事件期间的位置

window.setWindowPos(x, y)

旧答案:

我通过反射解决了这个问题

public void setWindowSize(int width, int height) {
Lwjgl3Application app = (Lwjgl3Application) Gdx.app
Field windowfield = app.class.getDeclaredField("currentWindow")
if(windowfield.trySetAccessible()) {
Lwjgl3Window window = windowfield.get(app)
Gdx.graphics.setWindowedMode(width, height)
// Can use context size because of no decorations on window
window.setWindowPos(Gdx.graphics.width/2 - width/2, Gdx.graphics.height/2 - height/2)
}
}

警告:尽管这可行,但这并不是一个好的解决方案。该类的字段出于某种原因保持私有(private),并且不将其暴露给 API 意味着它可以在任何更新时更改,从而给您带来困惑。

话虽这么说,我正在为像我一样绝望的人发布这个解决方案,因为我不确定是否还有另一个合适的解决方案。不过,我会热切等待更好的解决方案。

关于java - 调整大小后如何使用 LWJGL3 将 LibGDX 中的窗口居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46950186/

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