You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pygame.draw.rect()的width参数无法生成矩形边框问题

解决pygame.draw.rect()无法绘制边框的问题

问题出在你设置的width参数值过大——pygame的draw.rect()有个规则:当width大于等于目标矩形的宽或高的一半时,会自动切换为填充模式,而非绘制边框。你设了50,显然超过了文本rect的半宽或半高,所以绿色图形变成了填充矩形,而非预期的边框。

具体解决步骤:

  1. 确认矩形尺寸:先打印文本rect的宽高,比如加一行print(text_rect.width, text_rect.height),明确具体数值。
  2. 调整width参数:把width改成小于矩形宽和高一半的数值,比如设为5、10这类合理的边框厚度。
  3. 优化绘制顺序:为避免遮挡,建议绘制顺序调整为:先画粉色填充矩形,再画文本,最后画边框——这样边框在最上层,文本也不会被矩形盖住。

修改后的代码示例:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:15:35