倘若想在屏幕上显示字体,用pygame.draw.line()
的话过于麻烦,因此,Pygame为字体和创建文本提供了一些更简单的功能。
代码
# -*- coding:utf-8 -*-
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
BLUE = (0, 0, 128)
fontObj = pygame.font.Font('freesansbold.ttf', 32)
textSurfaceObj = fontObj.render('Hello World!', True, GREEN, BLUE)
textRectObj = textSurfaceObj.get_rect()
textRectObj.center = (200, 150)
while True: # main game loop
DISPLAYSURF.fill(WHITE)
DISPLAYSURF.blit(textSurfaceObj, textRectObj)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
结果
屏幕上显示文字有六个步骤:
1、创建一个pygame.font.Font对象。
2、通过调用Font对象的render()
方法创建一个Surface对象,并在其上绘制文本。
3、通过调用Surface对象的get_rect()
方法,从Surface对象创建一个Rect对象。此Rect对象将为有合理的宽度和高度,但顶部和左侧属性将为0。
4、通过更改其中一个属性来设置Rect对象的位置。我们将Rect对象的中心设置为200,150。
5、 将带有文本的Surface对象Blit到pygame.display.set_mode()
返回的Surface对象上。
6、调用 pygame.display.update()
使其出现在屏幕上。
pygame.font.Font()
构造函数的参数是要使用的字体文件,以及字体大小的整数(以点为单位,如字处理器如何测量字体大小)。我们传递'freesansbold.ttf'(这是Pygame附带的字体)和整数32(对于32 磅大小的字体)。
有关 使用其他字体的详细信息,请参阅http://invpy.com/usingotherfonts
render()
方法调用的参数是要呈现的文本的字符串,一个布尔值,用于指定是否需要消除锯齿,文本的颜色以及背景的颜色。
Anti-Aliasing(抗锯齿)
抗锯齿是一种图形技术,通过在边缘添加一点点模糊,使文本和形状看起来不那么块状。使用抗锯齿绘制需要更多的计算时间,因此尽管图形可能看起来更好,但程序可能运行得更慢(但只是一点点)。
如果放大锯齿线和消除锯齿线,它们看起来像这样:
要使Pygame的文本使用消除锯齿,只需为
render()
方法的第二个参数传递True。