Pygame:居中文本系统字体文本

2024-06-18 17:38:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我读过这篇关于文本居中的帖子: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()的系统字体

谢谢


Tags: to用户pos文本get系统字体surface
1条回答
网友
1楼 · 发布于 2024-06-18 17:38:24

使用^{}获得一个^{}对象,大小与文本相同。注意,freetype.Fontfreetype.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()

相关问题 更多 >