【问题标题】:How to transform current pygame surface to a larger one?如何将当前的 pygame 表面转换为更大的表面?
【发布时间】:2020-03-02 02:58:04
【问题描述】:

最初我正在创建一个尺寸为 WIDTH 和 HEIGHT 的游戏表面

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)

如何以 x2 的比例将 SCREEN1 转换为 SCREEN2?我知道有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)

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

【问题讨论】:

  • 代码是否试图重新调整窗口大小?还是别的什么?

标签: python python-3.x pygame


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2014-03-19
    • 2022-11-09
    • 2019-08-04
    • 1970-01-01
    相关资源
    最近更新 更多