pygame.draw.rect()的width参数无法生成矩形边框问题
解决pygame.draw.rect()无法绘制边框的问题
问题出在你设置的width参数值过大——pygame的draw.rect()有个规则:当width大于等于目标矩形的宽或高的一半时,会自动切换为填充模式,而非绘制边框。你设了50,显然超过了文本rect的半宽或半高,所以绿色图形变成了填充矩形,而非预期的边框。
具体解决步骤:
- 确认矩形尺寸:先打印文本rect的宽高,比如加一行
print(text_rect.width, text_rect.height),明确具体数值。 - 调整width参数:把
width改成小于矩形宽和高一半的数值,比如设为5、10这类合理的边框厚度。 - 优化绘制顺序:为避免遮挡,建议绘制顺序调整为:先画粉色填充矩形,再画文本,最后画边框——这样边框在最上层,文本也不会被矩形盖住。
修改后的代码示例:
import pygame pygame.init() screen = pygame.display.set_mode((800, 600)) font = pygame.font.Font(None, 48) text_surf = font.render("测试文本", True, (0, 0, 0)) text_rect = text_surf.get_rect(center=(400, 300)) # 打印矩形尺寸,方便调整width print(text_rect.width, text_rect.height) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((255, 255, 255)) # 1. 画粉色填充矩形 pygame.draw.rect(screen, (255, 100, 100), text_rect) # 2. 画文本 screen.blit(text_surf, text_rect) # 3. 画绿色边框,width设为5(根据实际尺寸调整) pygame.draw.rect(screen, (0, 255, 0), text_rect, width=5) pygame.display.flip() pygame.quit()
这样运行后就能看到粉色填充矩形、文本,以及外层的绿色边框了。
内容的提问来源于stack exchange,提问作者Miu
相关产品推荐
相关产品推荐

