我正在为学校进行模拟,我试图让pygame在我的原生分辨率中创建一个全屏显示。但是,我有一个QHD屏幕(2560x1440),它没有正常工作。据我所知,pygame正在以正确的分辨率渲染一个屏幕,但扩展它以使其缩放,就好像它是1080p一样,所以在边缘周围切掉大约300-400个像素。例如,这导致在(200,200)处渲染的圆完全不可见。经过一些研究,我了解到这是因为pygame没有正式支持我的解决方案(它没有在pygame.display.list_modes()中列出)。有没有办法强制它起作用?如果我可以使用我的实际分辨率而不是升级的1080p,我更愿意。
以下是初始化窗口的代码:
import pygame
from pygame.locals import *
pygame.init()
w = pygame.display.Info().current_w
h = pygame.display.Info().current_h
S = pygame.display.set_mode((w,h), pygame.FULLSCREEN)
答案 0 :(得分:0)
如果您使用的是Windows,请确保在显示设置中将缩放比例设置为100%。这将使你的文本和所有内容变小,如果你当前没有它,但我认为Pygame窗口由于某种原因受到这个数字的影响。
请参阅以下代码段,以确保您的窗口正确缩放。另请参阅here。
import pygame
from ctypes import windll
def run():
# Force windows to ignore the display scaling value.
windll.user32.SetProcessDPIAware()
pygame.display.init()
# Make the screen the highest resolution that will fit the screen at 100% scaling.
screen = pygame.display.set_mode(pygame.display.list_modes()[0])
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
done = True
pygame.display.flip()
pygame.quit()
if __name__ == "__main__":
run()