Pyglet:全屏时如何更改分辨率?

Posted

技术标签:

【中文标题】Pyglet:全屏时如何更改分辨率?【英文标题】:Pyglet: How to change resolution when you go fullscreen? 【发布时间】:2014-01-15 05:29:22 【问题描述】:

我正在使用 Pyglet,我有一个小对象,其中包括一个在背景上移动的对象。它们都由图像(png和jpg)表示。

我创建了一个大小为 800x600 的非全屏窗口,它工作正常,但是当我切换到全屏时...背景和对象的大小与以前相同,屏幕的其余部分充满黑色(空颜色)。

我想做的是在切换全屏模式时“缩放”图像或更改分辨率。

我已阅读文档,但找不到答案。

我知道使用 Pygame,这个问题会自动解决(如果您更改窗口大小,所有内容都会自动重新缩放)...但是如何使用 pyglet 来做到这一点?

这是我的相关代码:

import pyglet

WIDTH = 800
HEIGHT = 600
working_dir = '/where/i/have/my/images/'

window = pyglet.window.Window(WIDTH, HEIGHT)

background = pyglet.image.load(working_dir + 'background.jpg')
flying_thing = pyglet.image.load(working_dir + 'flying_thing.png')

@window.event
def on_draw():
    window.clear()
    background.blit(0, 0)
    flying_thing.blit(WIDTH // 2, HEIGHT // 2)

@window.event
def on_key_press(symbol, modifiers):
    if symbol == pyglet.window.key.SPACE:
        window.set_fullscreen(not window.fullscreen)

pyglet.app.run()

您可以尝试使用此代码将working_dir、background.jpg 和flying_thing.png 更改为您的工作目录和其中的两个图像。

【问题讨论】:

【参考方案1】:

我没试过,但是从pyglet docs,blit支持宽高。它的签名是

blit(self, x, y, z=0, width=None, height=None)

您是否尝试过使用

background.blit(width=window.width, height=windows.height)

相反? (我不确定 window.width 在全屏上的变化,让我们看看......)。

此答案也可能与您的问题相关:https://***.com/a/11183462/931303。

【讨论】:

它部分工作。以这种方式使用 blit,您可以手动正确缩放每个图像......但 Sprites 不使用 blit,因此不是一个完整的解决方案(但可能是最好的)。其他线程也很有用。同样的问题和另一种方法。我将对这两种想法进行一些试验,看看我是否可以让它发挥作用。谢谢!! 为我工作。谢谢

以上是关于Pyglet:全屏时如何更改分辨率?的主要内容,如果未能解决你的问题,请参考以下文章

C# winform 适应屏幕分辨率切换问题

更改分辨率时如何保留其他应用程序窗口的大小和位置? (例如,以非桌面分辨率来回全屏游戏)

ubuntu虚拟机怎么设置全屏显示

虚拟机的linux怎么全屏显示

redhat linux界面不能全屏显示,如何解决,麻烦高手详细解答一下,谢谢!

使用 Pyglet 将 gif 缩放到屏幕