如何在pygame中只将文本沿x轴居中,但可以移动y轴?

3
我试图将文本放在屏幕中央,同时在顶部标记中心的文本。为了目前使文本居中,我正在使用以下代码...
info = pygame.display.Info()
screen = pygame.display.set_mode((info.current_w, info.current_h), pygame.FULLSCREEN)
screen_rect = screen.get_rect()

txt = font.render("some random message", True, color)

screen.blit(txt, txt.get_rect(center=screen_rect.center))

但我无法找到一种使用get_rect()来仅编辑y轴的方法。我也在文档中找不到更多关于get_rect()函数的详细说明。

1个回答

4

pygame.Rect 对象具有以下属性:

x, y 
top, left, bottom, right 
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery 
size, width, height
w,h

你可以将centerx设置为屏幕centerx,以使矩形居中而不影响y值。

screen.blit(text, text.get_rect(centerx=screen_rect.centerx))

为了让它居中,如果你想要它置于顶部,你可以这样写:
screen.blit(text, text.get_rect(midtop=screen_rect.midtop)

并且位于底部居中

screen.blit(text, text.get_rect(midbottom=screen_rect.midbottom)

1
@KrimsonWolf pygame.Rect 对象已经拥有所有这些属性,因此您不需要创建任何东西。 - Ted Klein Bergman
1
@KrimsonWolf 在此之前它是否正确呈现?请注意,在我的示例中,我使用了变量名“text”,而不是您的变量名“txt”。您的屏幕尺寸不应该有影响,只要足够大以适应文本即可。 - Ted Klein Bergman
1
@KrimsonWolf,这对我有效。您确定没有引入其他问题吗? - Ted Klein Bergman
1
@KrimsonWolf 我已经在窗口模式和全屏模式下都尝试过了,所以这不应该是个问题。但如果你创建了新文件,你是否确保调用了 pygame.display.update()?否则它不会更新屏幕。请创建一个完整的示例,包括游戏循环、事件处理和窗口更新。 - Ted Klein Bergman
1
sceen.blit() 绘制到一个仅存在于内存中的 "图像"(内部缓冲区)。换句话说,它是不可见的。pygame.display.update() 获取 "图像" (缓冲区)并将其绘制到物理屏幕上,以便您可以看到它。如果没有 pygame.display.update(),您只能看到黑色(或者是最后一次更新到屏幕上的内容)。 - Ted Klein Bergman
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接