将文本添加到Rect

时间:2019-03-08 14:01:09

标签: python pygame

所以我已经定义了一个功能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

1 个答案:

答案 0 :(得分:2)

首先,您需要一个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)