Python Pygame字体创建

我们不仅可以在屏幕上绘制形状,还可以将文本绘制到屏幕上。Pygame 提供了一些非常简单易用的函数,可以创建字体和文本。字体(font)是字体类型的一种描述,表示按照统一风格绘制的一整套的字母、数字、符号和字符,例如 SimHei 和 Times New Roman 都是字体。

我们可以调用 pygame.font.SysFont 函数来创建一个 Font 对象,这个函数有两个参数,第 1 个参数是字体名称,第 2 个参数是字体大小(以点为单位)。来看一段程序,代码如下。
import pygame
pygame.init()
windowSurface=pygame.display.set_mode((800,600))
WHITE=(255,255,255)
myString="Hello World!"
font = pygame.font.SysFont("Times New Roman", 48)
text = font.render(myString, True, WHITE)
Running=True
while Running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            Running=False
    windowSurface.blit(text, (200,250))
    pygame.display.update()
pygame.quit()

这段代码中突出显示的代码是新添加的,其他代码我们在前面都见过。这里定义了一个名为 WHITE 的常量,并且将元组 (255, 255, 255) 复制给它,这个元组表示白色。然后,定义了一个名为 myString 的字符串变量,它包含了想要绘制在屏幕上显示给用户的文本,在这个例子中,要绘制的文本是 "Hello World!"。

然后调用了 pygame.font.SysFont 来创建 Font 对象,并将其赋值给名为 font 的变量,这个函数调用允许我们以 48 点的 Times New Roman 字体绘制到 Pygame 的 Surface 上。

接下来,我们在所创建的 font 对象上使用 render() 命令,把字符串绘制到单独的一个 Surface 上。在 text = font.render(myString, True, WHITE) 这行代码中,render() 的
  • 第 1 个参数是要绘制的文本的字符串;
  • 第 2 个参数指定是否想要抗锯齿的一个 Boolean 值,如果是 True,文本看上去更加平滑一些;
  • 第 3 个参数是用来渲染文本的颜色,这个例子中使用的是白色。

将这个 Font 对象赋值给变量 text。然后在游戏循环中,调用 blit() 函数,将像素从一个 Surface 复制到另一个 Surface 之上。windowSurface.blit(text, (200,250)) 是把 text 对象复制到 screen 这个 Surface 上。

运行代码,可以看到窗口中显示了 "Hello World!",如下图所示。

Python Pygame字体创建