我正在尝试使 pygame 表面的边缘变得模糊以获得视觉效果。表面的中心将保持不模糊。我找到了一种使用 Transform.smoothscale 模糊 pygame 表面的方法,但似乎这只适用于整个表面(PyGame 中的模糊)
我已经成功制作了一个仅模糊屏幕边缘的脚本,但是到模糊的过渡很尖锐并且不平滑。在模糊和不模糊之间有平滑的过渡。这是可能的事吗?谢谢
好吧,已经几天了,我终于找到了解决方案:
def blur_surface(surf, amount, iterations):
for i in range(iterations):
surf = pygame.transform.smoothscale(surf, (display_width / amount,
display_height / amount))
surf = pygame.transform.smoothscale(surf, (display_width, display_height))
return surf
blursurf = display.copy()
blursurf = blur_surface(blursurf, 2, 3)
blursurf.blit(blur_image, (0, 0), special_flags=pygame.BLEND_RGBA_SUB)
display.blit(blursurf, (0, 0))
'blur_image' 是一个圆形图像,中心为黑色,边缘慢慢褪色为透明(如 this)。
其工作原理如下:
我希望这对遇到同样问题的人有帮助