Python/Pygame - 如何将不同的透明度传输到不可见的表面上

标签 python image pygame transparency blit

我想知道是否可以将两个图像(例如 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 主题没有太多了解。另外,我知道更新屏幕和所有内容,这不是问题。

(如果有些内容不够清楚,请在下面评论,我会详细说明)

最佳答案

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

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

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

关于Python/Pygame - 如何将不同的透明度传输到不可见的表面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297209/

相关文章:

php - 如何通过php脚本调整图片大小

python - Python 上的 .OFF 文件

python - 如何让 urllib2 以数组形式返回数据

python - Pandas ExcelFile Sheet_names 返回空列表

python - 使用子进程时如何在 Python 中复制 tee 行为?

python - 如何在查询时在模式之间切换

java - 图片太大 : OutOfMemory Exception

image - PNG、GIF、JPEG 和 SVG 的不同用例是什么?

python - 使用二维数组创建西洋棋棋子 - Pygame

python - 在屏幕上移动线时 Pygame 屏幕撕裂