我读过关于以文本为中心的文章: Pygame - How to Center Text
但是,不是从文件中导入文本:
font = pygame.font.Font("example_font.tff", 25)
我想使用用户系统中的字体。
font = pygame.freetype.SysFont("comicsansms", 0)
使用freetype模块,因为我认为它使呈现不同大小更容易(比如当用户调整窗口大小时)
font.render_to(surface, pos, ..., size=int(surface.get_height()/2))
我不知道如何为pos设置一个值,其中文本将显示在表面的中心,因为我不能.get_rect()
或任何东西来获取文本的尺寸
可能的解决方案?
获取文本的维度
在pygame.font.Font()
中使用系统字体
谢谢!
发布于 2020-12-13 08:57:41
使用pygame.freetype.Font.get_rect
获取具有文本大小的pygame.Rect
对象。注意,freetype.Font
和freetype.SysFont
具有相同的接口:
text = "Hello World"
text_size = 50
text_rect = font.get_rect(text, size = text_size)
text_rect.center = surface.get_rect().center
font.render_to(surface, text_rect, text, color, size = text_size)
最起码的例子:
import pygame
import pygame.freetype
pygame.init()
window = pygame.display.set_mode((400, 200))
def drawTextCentered(surface, text, text_size, color):
text_rect = font.get_rect(text, size = 50)
text_rect.center = surface.get_rect().center
font.render_to(surface, text_rect, text, color, size = 50)
font = pygame.freetype.SysFont("comicsansms", 0)
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
window.fill(0)
drawTextCentered(window, "Hello World", 50, (255, 0, 0))
pygame.display.flip()
pygame.quit()
exit()
https://stackoverflow.com/questions/65278123
复制相似问题