【问题标题】:Python / Pygame - How to blit different transparencies onto an invisible surfacePython / Pygame - 如何将不同的透明度粘贴到不可见的表面上
【发布时间】:2017-11-14 23:51:24
【问题描述】:

我想知道是否可以将两个具有 120 和 200 alpha 的图像粘贴到具有 0 alpha 的表面上。

例如:

这是我所有的变量

game_display = pygame.display.set_mode((1280, 720))
transparent_display = pygame.Surface((1280, 720), pygame.SRCALPHA)
transparent_display.set_alpha(0)
object1 = pygame.Surface((100, 100))
object1.fill((255, 0, 0))
object2 = pygame.Surface((150, 50))
object2.fill((0, 0, 255))

现在我想制作一个包含所有组件的单一表面(图像) (我希望它们都在一个表面上,所以我没有 在每个游戏循环循环中加载每个表面)

transparent_display.blit(object1, (0, 0))
transparent_display.blit(object2, (50, 50))
game_display.blit(transparent_display, (0, 0)

我很抱歉,因为我对 pygame 中带有曲面的 alpha 主题了解不多。另外,我知道要更新屏幕和所有内容,这不是问题。

(如果不够清楚,请在下方评论,我会详细说明)

【问题讨论】:

  • 还有什么不工作?

标签: python image pygame transparency blit


【解决方案1】:

只需设置两个对象的 alpha 值,您的代码就可以工作了。

object1.set_alpha(120)
object2.set_alpha(200)
# Then blit them onto `transparent_display`.

请注意,set_alpha 不适用于每像素 alpha 表面(使用 .convert_alpha() 加载的图像或您传递到 pygame.SRCALPHA 的表面),但您仍然可以将透明表面 blit 到这些每像素 alpha 表面上.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多