Python / Pygame - 如何将不同的透明胶片复制到不可见的表面上
Python / Pygame - How to blit different transparencies onto an invisible surface
我想知道是否可以将两个 alpha 为 120 和 200 的图像 blit 到一个 alpha 为 0 的表面上。
例如:
这是我所有的变量
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 主题了解不多。另外,我知道更新屏幕和所有内容,这不是问题。
(如果有什么地方不够清楚,请在下面评论,我会详细说明)
只需设置两个对象的 alpha 值,您的代码就可以正常工作。
object1.set_alpha(120)
object2.set_alpha(200)
# Then blit them onto `transparent_display`.
请注意,set_alpha
不适用于每像素 alpha 表面(使用 .convert_alpha()
加载的图像或您传递给 pygame.SRCALPHA
的表面),但您仍然可以 blit 透明表面到这些每像素 alpha 表面上。
我想知道是否可以将两个 alpha 为 120 和 200 的图像 blit 到一个 alpha 为 0 的表面上。
例如:
这是我所有的变量
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 主题了解不多。另外,我知道更新屏幕和所有内容,这不是问题。
(如果有什么地方不够清楚,请在下面评论,我会详细说明)
只需设置两个对象的 alpha 值,您的代码就可以正常工作。
object1.set_alpha(120)
object2.set_alpha(200)
# Then blit them onto `transparent_display`.
请注意,set_alpha
不适用于每像素 alpha 表面(使用 .convert_alpha()
加载的图像或您传递给 pygame.SRCALPHA
的表面),但您仍然可以 blit 透明表面到这些每像素 alpha 表面上。