python - 如何将当前的 pygame 表面转换为更大的表面?

标签 python python-3.x pygame

最初,我正在创建一个具有宽度和高度尺寸的游戏表面

pygame.init()
SCREEN1 = pygame.display.set_mode((WIDTH,HEIGHT))
sprites = pygame.sprite.Group()
sprites.add( ..... #add sprite
...
...

sprites.draw(SCREEN)
SCREEN.blit("test", (WIDTH-4, HEIGHT-2))
pygame.display.flip()
clock.tick(FPS)

如何将 SCREEN1 转换为 SCREEN2,比例为 x2?我知道有 pygame.transform.scale, 我尝试了以下方法,但它不起作用。它只显示一个具有新尺寸的空窗口。

pygame.init()
SCREEN1 = pygame.display.set_mode((WIDTH,HEIGHT))
sprites = pygame.sprite.Group()
sprites.add( ..... #add sprite
...
...

sprites.draw(SCREEN)
SCREEN.blit("test", (WIDTH-4, HEIGHT-2))

SCREEN2=pygame.display.set_mode((WIDTH*2,HEIGHT*2))
pygame.transform.scale(SCREEN, (WIDTH*2,HEIGHT*2), SCREEN2)

pygame.display.flip()
clock.tick(FPS)

我可以知道正确的方法是什么吗?谢谢。

最佳答案

SCREEN 是与窗口关联的显示pygame.Surface。当pygame.display.set_mode()执行后,会生成一个新的显示表面,并且先前显示表面中的日期会丢失。在生成新的显示表面之前创建表面 (pygame.Surface.copy()) 的副本:

old_screen = SCREEN.copy()

SCREEN2 = pygame.display.set_mode((WIDTH*2,HEIGHT*2))
pygame.transform.scale(old_screen, (WIDTH*2,HEIGHT*2), SCREEN2)

关于python - 如何将当前的 pygame 表面转换为更大的表面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60481977/

相关文章:

python - pygame的声音格式差异

Python Pandas : Apply method to column if condition met in another column

python - 未绑定(bind)本地错误: local variable 'len' referenced before assignment

python - 相当于 Win32::Process::Memory 的 python 进程内存搜索

python - 如果字符串单词包含特定字符,则删除包含该字符的单词

python - 如何正确舍入半 float ?

python - 如何从一个文件中提取多个 JSON 对象?

python - 错误: 'utf-8' codec can't decode byte 0xb0 in position 14: invalid start byte

python - Pygame 属性错误帮助

python - 我怎样才能在pygame中平移声音?