【问题标题】:Issue with pygame set_alpha() setting image transparencypygame set_alpha() 设置图像透明度的问题
【发布时间】:2021-09-09 00:52:01
【问题描述】:

哎呀,

在 Pygame 中,我试图设置图像的透明度。 我用这个:

ship = pygame.image.load(os.path.join(DIR, "spaceship.png"))
ship.set_alpha(128)

问题: 该代码适用于 Mx Linux,但不适用于 Raspberry Pi (Raspbian Linux)。 如何解决这个问题? Pygame版本会不会有问题?

【问题讨论】:

  • “不起作用”是什么意思?没有效果?异常?
  • 无效。图像不透明。我发现,我的 Mx Linux 有 Pygame 版本 2.0.1 但 Raspbian 只有 Pygame 版本。 1.9.4

标签: python pygame set alpha


【解决方案1】:

PNG 文件生成一个 Surface,其格式支持每像素 alpha。从 Pygame 2.0 开始支持set_alpha 与这种格式的组合。在您必须选择 set_alpha() 或每像素 alpha 之前。见pygame.Surface

这个值不同于每个像素的 Surface alpha。对于具有每像素 alpha 的表面,忽略覆盖 alpha 并返回 None。

在 pygame 2.0 中进行了更改:每表面 alpha 可以与每像素 alpha 组合。


如果您想平滑地淡入或淡出图像,请编写一个将图像与屏幕“混合”的函数。在下面的函数BlendSurface中,参数alpha是表面的不透明度值,范围[0.0, 1.0]。 0.0 将生成一个完全透明(不可见)的表面。 1.0 会生成一个完全不透明的表面:

def BlendSurface(surf, pos, alpha):
    surf.set_alpha(min(int(alpha*255), 255))
    screen.blit(surf, pos)

另见Pygame : smooth picture aparition

【讨论】:

猜你喜欢
  • 2010-11-09
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多