【问题标题】:How to go about drawing the border of a rectangle in a resizable window using pygame?如何使用pygame在可调整大小的窗口中绘制矩形的边框?
【发布时间】:2020-10-19 08:48:41
【问题描述】:

我正在尝试在 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),(0,0,surf.get_width(),surf.get_height()),10)
    pygame.display.update()

提前致谢!

【问题讨论】:

  • 您的代码似乎已经根据窗口的大小绘制了一个矩形...那么,您的问题到底是什么?
  • 在运行这段代码时,我只是在屏幕上看到了一个白色的矩形。然而,我打算用这个语句在矩形上画一个红色边框。 pygame.draw.rect(surf,(255,0,0),(0,0,surf.get_width(),surf.get_height()),10)

标签: python pygame drawrect window-resize pygame-surface


【解决方案1】:

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

while True:
    # [...]

    surf.fill((255,255,255))
    
    pygame.draw.rect(surf,(255,0,0),(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,255))
    rect = win.blit(surf,(win_width/4,win_height/4))
    pygame.draw.rect(win, (255,0,0), rect, 10)
    pygame.display.update()

【讨论】:

  • 非常感谢! ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多