如何用Pygame绘制填充色与边框色不同的矩形?
更优的实现方式
你现在用两个矩形叠加的方法是可行的,不过可以通过下面两种方式优化:
1. 复用Rect对象,简化代码
把矩形区域单独定义成pygame.Rect对象,不用重复写坐标和尺寸,代码更整洁也好维护:
import pygame pygame.init() screen = pygame.display.set_mode((400, 400)) # 定义矩形对象 rect_area = pygame.Rect(100, 100, 100, 100) # 先画填充矩形,再画边框 pygame.draw.rect(screen, "red", rect_area) pygame.draw.rect(screen, "green", rect_area, 5) # 游戏主循环部分省略...
2. 预绘Surface提升性能(适合重复渲染的场景)
如果这个矩形需要在游戏里反复画,不如先在一个独立的Surface上做好填充加边框的效果,之后只需要把这个Surface贴到屏幕上就行,能减少重复绘制的开销:
import pygame pygame.init() screen = pygame.display.set_mode((400, 400)) # 创建和矩形一样大的Surface rect_surface = pygame.Surface((100, 100)) # 填充红色底色 rect_surface.fill("red") # 在Surface上画绿色边框,直接用Surface自身的Rect就行 pygame.draw.rect(rect_surface, "green", rect_surface.get_rect(), 5) # 之后每次要显示这个矩形,直接贴到屏幕对应位置 screen.blit(rect_surface, (100, 100)) # 游戏主循环部分省略...
要说明的是:Pygame的draw.rect本身不支持一次设置填充色和边框色,所以本质上还是得分两步画,但上面的方法能让代码更简洁或者渲染更高效。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

