有没有办法"清除"表面?

Eri*_*ric 6 python pygame blit geometry-surface

有什么方法可以清除任何已经被打开的表面?

小智 6

如果您想要使 pygame Surface 对象“干净”,即擦除所有图像,在每个游戏循环中将新图像传输到它,并保持对等像素 alpha 而不创建新表面,您可以填充它,但不是纯色,而是使用透明色

from pygame import Color, Surface
empty = Color(0,0,0,0) #The last 0 indicates 0 alpha, a transparent color
field = Surface((width, height), flags=SRCALPHA)

#Inside the game loop
field.fill(empty)
Run Code Online (Sandbox Code Playgroud)

*对不起,我的英语不好,还在学习中


Miz*_*zor 5

当我不关心性能时,我使用:

mysurface.fill((0,0,0))
Run Code Online (Sandbox Code Playgroud)

这将在整个表面上绘制指定的颜色(在本例中为黑色)。这就是你所说的“清楚”吗?

哦,当然,您需要在执行此操作后“翻转”表面以使其在屏幕上可见。


Pod*_*Pod 2

我不知道你用的是什么API,所以这里是一个模糊的答案:

在几乎所有情况下,“清除”表面只是将与表面大小相同的彩色四边形传输到其上。使用的颜色是您想要的透明颜色。

如果您知道如何进行 blit,只需将一个相同大小的白色四边形 blit 到表面上即可。