python - 如何在pygame中制作半透明 Sprite

标签 python graphics sprite pygame

我刚开始使用 pygame,我正在尝试制作一个半透明的 Sprite , Sprite 的源文件是从磁盘加载的非透明位图文件。如果可以的话,我不想编辑源图像。我确信有一种方法可以使用 pygame 代码来执行此操作,但 Google 对我没有帮助。

最佳答案

加载图像后,您需要在 Surface 上启用 alpha channel 。看起来有点像这样:

background = pygame.Display.set_mode()
myimage = pygame.image.load("path/to/image.bmp").convert_alpha(background)

这将加载图像并立即将其转换为适合 alpha 混合到显示表面的像素格式。如果您需要 blit 到其他格式的屏幕外缓冲区,您可以使用其他表面。

您可以足够简单地设置每个像素的 alpha,假设您有一个函数,它接受 rgb 颜色值的 3 元组并返回一些所需的 rgba 颜色 + alpha 的 4 元组,您可以改变每个像素的表面:

def set_alphas(color):
    if color == (255,255,0): # magenta means clear
        return (0,0,0,0)
    if color == (0,255,255): # cyan means shadow
        return (0,0,0,128)
    r,g,b = color
    return (r,g,b,255) # otherwise use the solid color from the image.

for row in range(myimage.get_height()):
    for col in range(myimage,get_width()):
        myimage.set_at((row, col), set_alphas(myimage.get_at((row, col))[:3]))

还有其他更有用的方法可以做到这一点,但我希望这能给你启发。

关于python - 如何在pygame中制作半透明 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247921/

相关文章:

python - Twitter api python - sys.argv 和 json

python - 在 Python 中使用 NumPy 进行多元回归?

asp.net - 用另一个图像标记图像以在 ASP.NET 中创建水印的最佳方法?

Java 和 JFrame "NoClassDefFoundError"

iphone - 不使用 OpenGL 以加法混合模式绘制图像

swift:返回具有相同位置的子节点

python - Pygame 中不显示 Sprite

python - SciPy 警告消息 : "Ill-conditioned matrix detected"

python - 在没有系统默认代理的情况下使用 URLLIB Python

r - 在R中创建具有相同轴的多个散点图