Python 3 Pygame模块能否绘制填充与描边颜色不同的矩形?
解决Pygame矩形填充与描边颜色不同的问题
嘿,我之前也碰到过一模一样的需求!确实,Pygame自带的pygame.draw.rect()函数没办法直接一次画出填充和描边颜色不同的矩形——它的最后一个fill参数只能二选一:设为0是纯色填充,设为≥1的数值时是对应宽度的描边(此时内部是透明的),没法分开指定两种颜色。
不过你不用太纠结,虽然本质上还是要画两个矩形,但我们可以把这个逻辑封装成一个复用函数,就不会显得繁琐了。比如这样:
def draw_outlined_rect(surface, fill_color, border_color, rect, border_width=1): # 先绘制填充底色的矩形 pygame.draw.rect(surface, fill_color, rect) # 再在上面绘制描边的矩形(用border_width控制线条粗细) pygame.draw.rect(surface, border_color, rect, border_width)
之后你画棋盘格子的时候,直接调用这个函数就行,比如对应你原有的代码:
# 假设你已经定义好了填充色fill_colour、描边色border_colour draw_outlined_rect(gameDisplay, fill_colour, border_colour, (xCoord, yCoord, Width, Height), 1)
这样一来,你只需要一行代码就能完成“带不同颜色描边的填充矩形”绘制,而且逻辑清晰,后续要调整也很方便。另外不用担心性能问题,Pygame的矩形绘制效率很高,棋盘这种数量的元素完全不会有卡顿。
内容的提问来源于stack exchange,提问作者validateMe




