【问题标题】:Adding Text onto a Rect [duplicate]将文本添加到 Rect [重复]
【发布时间】:2019-03-08 14:01:09
【问题描述】:

所以我定义了一个 Meteor 函数并设置了尺寸以及它将出现在屏幕上的位置。

def Meteor(Meteorx, Meteory, Meteorw, Meteorh, colour):
    pygame.draw.rect(Screen, colour, [Meteorx,Meteory, Meteorw, Meteorh])

但我想向它添加文本,但我不知道如何将它粘贴到矩形上(注意:我尝试过使用 font.render 等)。我的方法是否正确,还是有比将其放在矩形表面上更简单的方法。

源码https://github.com/WamblyTK/Word-Blaster/blob/master/Full%20Draft%20%231

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    首先您需要一个pygame.font,它可以由pygame.font.SysFont()pygame.font.Font 创建。例如:

    import pygame.font
    
    font = pygame.font.SysFont('Times New Roman', 30)
    

    使用字体对象,.render() 可以呈现文本。结果是一个pygame.Surface 对象。
    如果您愿意,您可以通过pygame.transform.smoothscale 将表面缩放到特定大小。
    最后,文本可以通过blit 绘制到表面。例如:

    def Meteor(Meteorx, Meteory, Meteorw, Meteorh, colour):
        text = font.render('test text', False, colour)
        text = pygame.transform.smoothscale(text.convert(), (Meteorw, Meteorh))
        Screen.blit(text, (Meteorx, Meteory))
    

    正如下面评论中提到的,使用pygame.freetype 更容易。例如:

    import pygame.freetype
    
    font = pygame.freetype.SysFont('Times New Roman', 30)
    
    def Meteor(Meteorx, Meteory, Meteorw, Meteorh, colour):
        font.render_to(Screen, (Meteorx, Meteory), 'test text', colour, size=Meteorw)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2022-12-11
    • 2016-03-29
    • 2020-06-25
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    相关资源
    最近更新 更多