【问题标题】:Pyglet: How to change resolution when you go fullscreen?Pyglet:全屏时如何更改分辨率?
【发布时间】: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 更改为您的工作目录和其中的两个图像。

【问题讨论】:

    标签: python graphics fullscreen resolution pyglet


    【解决方案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://stackoverflow.com/a/11183462/931303。

    【讨论】:

    • 它部分工作。以这种方式使用 blit,您可以手动正确缩放每个图像......但 Sprites 不使用 blit,因此不是一个完整的解决方案(但可能是最好的)。其他线程也很有用。同样的问题和另一种方法。我将对这两种想法进行一些试验,看看我是否可以让它发挥作用。谢谢!!
    • 为我工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多