Pygame文本重叠时,我没有使用屏幕.填充(颜色),为什么



我正在尝试将文本放在PyGame窗口上。

所以我把代码写如下:

如果我不设置窗口颜色screen.fill(),我的输出文本将重叠在一起,我不知道为什么?

def game_12_4():
p.init()
screen = p.display.set_mode((1200, 800), p.RESIZABLE, 0)
t = ""
text = p.font.Font(None, 100).render(t, True, (255, 0, 0))
text_rect = text.get_rect()
screen_rect = screen.get_rect()
text_rect.center = screen_rect.center
while True:
for event in p.event.get():
if event.type == p.QUIT:
sys.exit()
elif event.type == p.KEYDOWN:
if event.key == p.K_UP:
t = "up"
elif event.key == p.K_DOWN:
t = "down"
text = p.font.Font(None, 100).render(t, True, (255, 0, 0))
screen.blit(screen, (0, 0))
screen.fill((255, 255, 255)) ** <--------this cause the error**
screen.blit(text, text_rect)
p.display.flip()

game_12_4()

检查图像

如果我不设置窗口颜色screen.fill((,我的输出文本将重叠在一起,我不知道为什么?

拿一块黑板。把单词"向上"写在黑板上。现在在完全相同的地方写下"写下"。正如你所看到的,单词会重叠。如果你在同一地点将多个表面闪电般地投射到屏幕上,就会发生这种情况。

现在回到黑板上。把它擦干净。在黑板上写上单词"up"。再擦一次。现在把"写"在和以前完全相同的地方。正如你所看到的,单词不会重叠。看到区别了吗?

当你把一个表面闪电式地打到另一个表面上(或者填充一个表面,或者用pygame的绘制函数在表面上绘制一些东西,或者手动操作像素数据,不管怎样(时,它会永远改变,直到你再次改变它。

因此,总的来说,一旦你将"向上"文本表面闪电式地打到屏幕表面上,它就会一直呆在那里,直到你在它上面作画(它不会神奇地自行移除(,而最简单的方法是在每一帧都用纯色填充整个屏幕(例如screen.fill((255, 255, 255))(。

最新更新