pygame 中的模糊小插图[重复]

问题描述 投票:0回答:1

我正在尝试使 pygame 表面的边缘变得模糊以获得视觉效果。表面的中心将保持不模糊。我找到了一种使用 Transform.smoothscale 模糊 pygame 表面的方法,但似乎这只适用于整个表面(PyGame 中的模糊

我已经成功制作了一个仅模糊屏幕边缘的脚本,但是到模糊的过渡很尖锐并且不平滑。在模糊和不模糊之间有平滑的过渡。这是可能的事吗?谢谢

pygame
1个回答
-1
投票

好吧,已经几天了,我终于找到了解决方案:

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)。

其工作原理如下:

  1. 复制我们想要模糊的表面。
  2. 整个副本都模糊了。
  3. 褪色圆圈的图像被位块传输到副本上,但带有一个标志,使 pygame 在表面上切出一个洞。
  4. 新表面被位块传输到原始表面上。

我希望这对遇到同样问题的人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.