问题描述
我的目标是创建一个可以调整自身大小并进入全屏模式的窗口。调整大小工作正常,但是当我进入全屏时,它看起来像这样:
蓝色方块应该居中,白色也是如此。我已经找到了这个原因,但我不确定它为什么会发生或如何解决它。如果 screen
的高度小于 window
的高度,会导致这种情况。那么,我将如何做到这一点,当我进入全屏模式时,背景和蓝色方块会在我的屏幕上居中?
import pygame
import sys
from pygame.locals import *
from math import floor
# Initialize ------------------------------------------------------------------------------------- #
pygame.init()
FPS = 60
clock = pygame.time.Clock()
SCREEN_SIZE = [800,450]
SCREEN_RATIO = SCREEN_SIZE[0]/SCREEN_SIZE[1]
window_size = [800,450]
screen = pygame.Surface(SCREEN_SIZE)
window = pygame.display.set_mode(window_size,RESIZABLE)
pygame.display.set_caption('Project')
monitor_size = pygame.display.list_modes()[0]
print(monitor_size)
def display_edges(surface,color=(255,0)):
pygame.draw.aaline(surface,color,(window_size[0] - 1,0),window_size[1] - 1))
pygame.draw.aaline(surface,(0,window_size[1] - 1),0))
pygame.draw.aaline(surface,window_size[1] - 1))
full_screen = False
# Game loop -------------------------------------------------------------------------------------- #
running = True
while running:
# Event loop --------------------------------------------------------------------------------- #
for event in pygame.event.get():
if event.type == QUIT:
running = False
elif event.type == VIDEORESIZE:
window_size = (event.w,event.h)
window = pygame.display.set_mode(window_size,RESIZABLE)
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,FULLSCREEN)
screen = pygame.transform.scale(screen,window_size)
else:
window_size = window_size_before
window = pygame.display.set_mode(window_size,RESIZABLE)
screen = pygame.Surface(SCREEN_SIZE)
# Render ------------------------------------------------------------------------------------- #
screen.fill((240,240,240))
pygame.draw.rect(screen,100,200),(SCREEN_SIZE[0]/2-25,SCREEN_SIZE[1]/2-25,50,50))
if window_size[0]/window_size[1] > SCREEN_SIZE[0]/SCREEN_SIZE[1]:
SCREEN_SIZE[1] = window_size[1]
SCREEN_SIZE[0] = floor(window_size[1]*SCREEN_RATIO)
screen = pygame.transform.scale(screen,SCREEN_SIZE)
elif window_size[0]/window_size[1] < SCREEN_SIZE[0]/SCREEN_SIZE[1]:
SCREEN_SIZE[0] = window_size[0]
SCREEN_SIZE[1] = floor(window_size[0]/SCREEN_RATIO)
screen = pygame.transform.scale(screen,SCREEN_SIZE)
window.blit(screen,(window_size[0]/2 - SCREEN_SIZE[0]/2,window_size[1]/2 - SCREEN_SIZE[1]/2))
display_edges(window)
# Update ------------------------------------------------------------------------------------- #
pygame.display.update()
clock.tick(FPS)
pygame.quit()
sys.exit()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)