Pygame:居中文字系统字体文字
Pygame: Centering text system font text
我读过这个post关于文本居中的内容:
Pygame - How to Center Text
但是,不是从文件中导入文本:
font = pygame.font.Font("example_font.tff", 25)
我想使用用户系统的字体
font = pygame.freetype.SysFont("comicsansms", 0)
使用 freetype 模块,因为我认为它可以更轻松地呈现各种尺寸(比如当用户调整 window 的大小时)
font.render_to(surface, pos, ..., size=int(surface.get_height()/2))
我不确定如何为 pos 设置一个值,使文本显示在表面的中心,因为我无法 .get_rect()
或任何获取文本尺寸的方法
可能的解决方案?
获取文本的尺寸
使用 pygame.font.Font()
的系统字体
谢谢!
使用具有文本大小的 pygame.freetype.Font.get_rect
to get a 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()
我读过这个post关于文本居中的内容: Pygame - How to Center Text
但是,不是从文件中导入文本:
font = pygame.font.Font("example_font.tff", 25)
我想使用用户系统的字体
font = pygame.freetype.SysFont("comicsansms", 0)
使用 freetype 模块,因为我认为它可以更轻松地呈现各种尺寸(比如当用户调整 window 的大小时)
font.render_to(surface, pos, ..., size=int(surface.get_height()/2))
我不确定如何为 pos 设置一个值,使文本显示在表面的中心,因为我无法 .get_rect()
或任何获取文本尺寸的方法
可能的解决方案?
获取文本的尺寸
使用 pygame.font.Font()
谢谢!
使用具有文本大小的 pygame.freetype.Font.get_rect
to get a 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()