如何使用pygame在可调整大小的窗口中绘制矩形的边界?

问题描述

我正在尝试在pygame中创建可调整大小的窗口,在该窗口中,带边框的矩形应与窗口成固定比例。

import pygame,sys 
pygame.init()

win = pygame.display.set_mode((400,400),pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE)

while True:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type == pygame.VIDEORESIZE:
            pygame.display.set_mode((event.w,event.h),pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE)

    win_width,win_height = pygame.display.get_surface().get_size()
    surf = pygame.Surface((round(win_width/2),round(win_height/2)))
    surf.fill((255,255,255))
    win.blit(surf,(win_width/4,win_height/4))
    pygame.draw.rect(surf,(255,0),(0,surf.get_width(),surf.get_height()),10)
    pygame.display.update()

谢谢!

解决方法

您在白色表面(surf)上绘制矩形。因此,您必须先在surf涂破 surf,然后在win上绘制它:

while True:
    # [...]

    surf.fill((255,255,255))
    
    pygame.draw.rect(surf,(255,0),(0,surf.get_width(),surf.get_height()),10)
    win.blit(surf,(win_width/4,win_height/4))
    
    pygame.display.update()   

或者,您可以直接在win上绘制矩形:

while True:
    # [...]

    surf.fill((255,255))
    rect = win.blit(surf,win_height/4))
    pygame.draw.rect(win,rect,10)
    pygame.display.update()