我想将背景图像的大小调整为与带有Sprite的pyglet窗口完全相同的分辨率。
我已经尝试过blit方法blit(0, 0, window.width, window.height)
。这个解决方案对我有用。但我读过,使用精灵和绘制方法是图形的更好选择。但是对于绘制方法,我找不到用于调整宽度和高度大小的任何选项,也找不到任何其他方法来保持子画面和窗口的分辨率相同。有什么解决办法如何将精灵大小调整为Window的分辨率?
import os
import pyglet
HEIGHT = 800
WIDTH = 1100
resourcesPath = os.path.join(os.getcwd(), "models")
backgroundPath = os.path.join(resourcesPath, "backgrounds", "blue.png")
main_batch = pyglet.graphics.Batch()
backgroundImgLoad = pyglet.image.load(backgroundPath)
background = pyglet.sprite.Sprite(backgroundImgLoad)
objects = []
GAME_WINDOW = pyglet.window.Window(width=WIDTH, height=HEIGHT)
def draw_window():
GAME_WINDOW.clear()
# backgroundImgLoad.blit(0, 0, width=GAME_WINDOW.width, height=GAME_WINDOW.height)
background.draw()
GAME_WINDOW.push_handlers(
on_draw=draw_window,
)
if __name__ == "__main__":
pyglet.app.run()
答案 0 :(得分:0)
您可以设置pyglet.sprite.Sprite
对象的.scale_x
和.scale_y
属性:
backgroundImgLoad = pyglet.image.load(backgroundPath)
background = pyglet.sprite.Sprite(backgroundImgLoad)
background.scale_x = WIDTH / background.width
background.scale_y = HEIGHT / background.height
def draw_window():
GAME_WINDOW.clear()
background.draw()
请注意,可以随时动态更改属性,例如调整窗口大小时。
请注意,pyglet使用GPU绘制图像(纹理)。因此,没有必要调整图像本身的大小。设置比例就足够了。 GPU从纹理读取像素并将其放置在片段上。