text - 如何删除/替换pygame中的文本

标签 text pygame blit

我对 pygame 还很陌生,我遇到了我无法找到答案的第一个树桩。

在 blitting 文本之后,然后更改相同变量的字符串,游戏不是用新文本替换原始文本,而是将两个文本重叠..?

最佳答案

您必须先删除旧文本。由 Font.render 创建的曲面是普通曲面。曾经Surface是 blit,它的内容成为目标表面的一部分,您必须操纵目标表面以删除源表面上 blit 的任何内容。

删除目标表面的一种方法是将背景表面 blit 到它上面。背景表面是目标表面没有任何类似文本或 Sprite 的样子。另一种方法是用纯色填充表面:

# pygame initialization goes here

screen = pygame.display.get_surface()
font = pygame.font.Font(None, 40)

font_surface = font.render("original", True, pygame.Color("white"));
screen.blit(surface, (0, 0))

screen.fill(pygame.Color("black")) # erases the entire screen surface
font_surface = font.render("edited", True, pygame.Color("white"));
screen.blit(surface, (0, 0))

关于text - 如何删除/替换pygame中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467863/

相关文章:

c# - Graphics.DrawString与TextRenderer.DrawText?哪些可以提供更好的质量

php - 当我们有 2 个或更多选项时如何在 php 中格式化文本

python - pygame.mouse.get_pos() 成两个单独的字符串

python - 通过传递坐标来位击棋盘上的白色方 block

opengl - 如果指定了 GL_COLOR_BUFFER_BIT 掩码,glBlitFramebuffer 是否会复制所有颜色附件?

python - 除了单词之外,如何在字符之间添加空格?

javascript - Canvas 文本未显示? - JavaScript

python - Pygame 窗口在退出时卡住

python - Pygame-如何朝玩家 Sprite 的方向射击?

python - Pygame 文本表面不绘图