调整大小后获取显示的大小

问题描述 投票:0回答:1

不使用event.dict['size'],如何获得实际显示的尺寸?

假设我有一个带有两个屏幕的游戏,分别是“菜单”和“游戏”,它们都可以调整大小。为了使所有图像缩放,我在主文件的开头使用:

window = pygame.display.set_mode(reso,pygame.RESIZABLE)
window_fake = window.copy()

并且在两个屏幕的循环中,我在伪造的窗口上放大了所有图像,并在显示窗口上放大了所有图像:

window.blit(pygame.transform.scale(window_fake, reso_act),(0,0))
pygame.display.flip() 

for event in pygame.event.get():
    if event.type==pygame.VIDEORESIZE:
        reso_act = event.dict['size']

现在,在调整显示大小时,所有图像都会缩放。但是,在调整大小后从“菜单”转到“游戏”时,我需要将实际显示的大小用作变量reso_act,因为我再次将所有内容都抹在了假窗口上并缩放到了显示窗口,但是没有VIDEORESIZE事件。

所以现在,如果我在“菜单”中将显示器缩小,然后单击“开始”并绘制“游戏”,它将具有原始分辨率,并且一半图像在显示器之外。

我尝试了以下操作,但是它们都给了我reso的值,即原始未调整大小的分辨率:

window.get_size()
window_fake.get_size()
pygame.display.get_surface().get_size()
window.get_rect()
window_fake.get_rect()

是否有办法获得显示器的实际尺寸?还是其他更聪明的方式来实现我想要的目标?

python pygame resize size display
1个回答
0
投票

我现在通过每次从不同屏幕的所有功能返回reso_act并将其作为所有这些功能的输入传递来解决它,因此它记住该设置。它不是那么优雅,但是有效。

[如果有人知道如何获得显示器的实际尺寸,我仍然很想知道。

© www.soinside.com 2019 - 2024. All rights reserved.