如何在Pygame中不使用图片绘制带圆角边缘的线条
Pygame无外部资源绘制圆角边缘线条方案
无需引入外部图片,直接用Pygame内置绘图API即可实现目标效果,核心逻辑是先绘制基础粗线条,再在线条两端补画同色圆形覆盖原生方头,实现圆角效果。
实现步骤
- 提前确定线条的起点、终点、粗细、颜色四个核心参数
- 调用
pygame.draw.line()绘制对应参数的粗线条,width参数设为目标线条粗细 - 分别以线条起点、终点为圆心,以线条粗细的1/2为半径,调用
pygame.draw.circle()绘制两个实心同色圆形,刚好和粗线条两端拼接
示例代码
import pygame import sys pygame.init() screen = pygame.display.set_mode((600, 400)) pygame.display.set_caption("圆角线条测试") # 自定义线条参数 line_color = (60, 120, 220) start_pos = (120, 200) end_pos = (480, 200) line_thickness = 18 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() screen.fill((240, 240, 240)) # 绘制基础线 pygame.draw.line(screen, line_color, start_pos, end_pos, width=line_thickness) # 补两端圆角 pygame.draw.circle(screen, line_color, start_pos, line_thickness//2) pygame.draw.circle(screen, line_color, end_pos, line_thickness//2) pygame.display.update()
拓展说明
- 该方案对任意角度的直线都适用,不需要额外做坐标换算
- 如果需要绘制带圆角拐点的折线,只需要在每两个线段的连接点也补画同半径的同色圆形即可
- 若该线条需要高频重复渲染,可以预先将绘制好的圆角线条保存为Surface对象缓存,后续直接调用
blit方法渲染即可,降低重复计算开销
内容的提问来源于stack exchange,提问作者floatingCatsAndDogs
相关产品推荐
相关产品推荐

