gpt4 book ai didi

python - Pygame 全屏放大

转载 作者:行者123 更新时间:2023-12-05 07:01:42 26 4
gpt4 key购买 nike

我不确定这是否是 pygame 的已知问题,但它似乎在我使用全屏时放大了。我的显示器分辨率是 1920 x 1080。让我向您展示一些代码和我从中获得的输出。

import pygame, sys
from pygame.locals import *

pygame.init()
clock = pygame.time.Clock()

monitor_size = pygame.display.list_modes()[0]
print(monitor_size)
# Output: 1920x1080

FPS = 30
WINDOW_SIZE = (768, 432) # Proportional to 1920x1080, so it doesn't stretch out
SCREEN_SIZE = WINDOW_SIZE
window = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption('Project')
screen = pygame.Surface(SCREEN_SIZE)

full_screen = False

def display_corners(surface):
pygame.draw.aaline(surface, (255, 0, 0), (SCREEN_SIZE[0] - 1, 0), (SCREEN_SIZE[0] - 1, SCREEN_SIZE[1] - 1))
pygame.draw.aaline(surface, (255, 0, 0), (0, SCREEN_SIZE[1] - 1), (SCREEN_SIZE[0] - 1, SCREEN_SIZE[1] - 1))
pygame.draw.aaline(surface, (255, 0, 0), (0, 0), (SCREEN_SIZE[0] - 1, 0))
pygame.draw.aaline(surface, (255, 0, 0), (0, 0), (0, SCREEN_SIZE[1] - 1))


while True:
# Event Loop ------------------------------------------------- #
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_F5:
full_screen = not full_screen
if full_screen:
window_size_before = WINDOW_SIZE
WINDOW_SIZE = monitor_size
WINDOW = pygame.display.set_mode(WINDOW_SIZE, pygame.FULLSCREEN)

else:
WINDOW_SIZE = window_size_before
WINDOW = pygame.display.set_mode(WINDOW_SIZE)


# Rendering ------------------------------------------------- #
screen.fill((10, 10, 10))
display_corners(screen)

if not full_screen:
window.blit(pygame.transform.scale(screen, WINDOW_SIZE), (0,0))
else:
window.blit(pygame.transform.scale(screen, (WINDOW_SIZE[0], WINDOW_SIZE[1])), (0,0))
# Update ---------------------------------------------------- #
pygame.display.update()
clock.tick(FPS)

所以我有一个非常基本的全屏功能。但是,当我将 monitor_size 变量设置为我的显示器大小时,我在全屏模式下看不到应该显示在屏幕两侧的红线。即使我使用的是我确切的显示器尺寸。但是经过一些反复试验,我得到了完美的显示器尺寸,它是 1600 x 900,它也使用相同的比例,所以这是有道理的。我通过使用 monitor_size = pygame.display.list_modes()[2] 得到了这个。但我不明白为什么 1920x1080(或 pygame.display.list_modes()[0])分辨率不是完美尺寸,我觉得我没有使用使用 1600 x 900 充分发挥屏幕的潜力。

最佳答案

您是否研究过使用从 pygame.locals 导入的 RESIZABLE 进行测试

screen = pygame.display.set_mode(WINDOW_SIZE, RESIZABLE)

关于python - Pygame 全屏放大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63767966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com