python - Pygame - 图像/表面的平滑变换

标签 python pygame

有没有办法在一张图像和另一张图像之间创建平滑过渡?

假设我有图像 X 和图像 Y

ImageX = pygame.image.load('foo.png')
ImageY = pygame.image.load('oof.png')

当 W = 5 时,图像 X 变换为图像 Y 通常,我会在绘制代码中执行此操作:

if w == 5:
    screen.blit(ImageY, (100, 100))
else:
    screen.blit(ImageX, (100, 100))

但这只会使图像 X 被 ImageY 替换,一帧是 imageX,另一帧是 imageY

如何使 ImageX 顺利过渡到 ImageY?就像css中的transition属性一样。

最佳答案

您可以使用 set_alpha 为表面指定透明度 (0-255)

ImageX.set_alpha(128)

当您在 ImageY 之后 blit ImageX 时,您应该会看到两个图像。

blit(ImageY, ...)
blit(ImageX, ...)

您只需在循环中更改set_alpha()(从255到0)即可获得平滑的效果。

if transparency > 0:
     transparency -= 1 

ImageX.set_alpha(transparency)

blit(ImageY, ...)
blit(ImageX, ...)

顺便说一句:可能要使用set_alpha()图像必须使用convert(),而不是convert_alpha()


查看我在 GitHub 上的示例:pygame - transparency

关于python - Pygame - 图像/表面的平滑变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682103/

相关文章:

python - 在pygame<外星人入侵>中,为什么我的外星人只出现一排?

python - 创建图像查看器并允许通过 python 缩放、拖动和画线的最佳方法

python - Pygame碰撞

python - 几个多对多表与 sqlalchemy 连接

python - 让 Python 脚本每小时执行一些操作

python - Django:在保存模型时检测一组字段的变化

python - 在 pygame 中获取初始文本输入的最简单方法

python - 如何在 Mac 操作系统上安装 libxml2-dev libxslt-dev

python - 如何创建一个迭代列表,其中一些变量是独立的,一些是相关的?

python - 如果两个矩形都在移动,如何检测一个矩形是否在另一个矩形中?