主要内容 #
- 模块介绍
- 模块参数说明
- 使用示例
收获 #
会使用font模块创建字体对象。
1.模块介绍 #
pygame.font是Pygame 中加载和表示字体的模块。文本是任何一款游戏中不可或缺的重要要素之一,Pygame 通过pygame.font模块来创建一个字体对象,从而实现绘制文本的目的。
该模块的常用方法如下所示:
2.模块参数说明 #
Font 模块提供了两种创建字体(Font)对象的方法,分别是:
1.SysFont(从系统中加载字体文件创建字体对象)
2.Font(通过文件路径创建字体对象)
下面对这两种方法分分别进行介绍:
1) font.SysFont()
直接从系统中加载字体使用如下方法:
pygame.font.SysFont(name, size, bold=False, italic=False)
参数说明如下:
1.name:列表参数值,表示要从系统中加载的字体名称,它会按照列表中的元素顺序依次搜索,如果系统中没有列表中的字体,将使用 Pygame 默认的字体。
2.size:表示字体的大小;
3.bold:字体是否加粗;
4.italic:字体是否为斜体。
具体使用如下:
my_font = pygame.font.SysFont(['方正粗黑宋简体','microsoftsansserif'],50)
2) font.Font()
当我们想要在游戏中引入比较炫酷的字体,而系统中又不存在时,我们可以使用另外一种方法,从外部加载字体文件来绘制文本。其语法格式如下:
my_font = pygame.font.Font(filename, size)
参数说明如下:
1.filename:字符串格式,表示字体文件的所在路径;
2.size:设置字体的大小。
具体使用如下:
f = pygame.font.Font('C:/Users/Administrator/Desktop/willhar_.ttf',50)
3) 字体对象方法
Pygame 为处理字体对象提供了一些常用方法,如下所示:
使用上述方法,我们可以非常方便地对字体进行渲染,或者获取字体的相关信息,比如字体的高度、是否是粗体、斜体等信息。
上述方法中使用最多要数第一个方法,它是绘制文本内容的关键方法,其语法格式如下:
render(text, antialias, color, background=None)
参数说明如下:
1.text:要绘制的文本内容
2.antialias:布尔值参数,是否是平滑字体(抗锯齿)。
3.color:设置字体颜色;
4.background:可选参数,默认为 None,该参数用来设置字体的背景颜色。
text = f.render("网址:dashima.net",True,(255,0,0),(255,255,255))
除了使用上述方法之外,Pygame 为了增强字体模块的功能,在新的版本中又加入了另外一个字体模块,它就是 Freetype 模块。该模块属于 Pygame 的高级模块, 它能够完全可以取代 Font 模块,并且在 Font 模块的基础上又添加了许多新功能,比如调整字符间距离,字体垂直模式以及逆时针旋转文本等(详情可阅读官方文档)。
如果想 Freetype 模块,必须使用以下方式导包:
import pygame.freetype
3.使用示例 #
1) font.SysFont()使用示例如下:
print("获取系统中所有可用字体",pygame.font.get_fonts()) my_font = pygame.font.SysFont(['方正粗黑宋简体','microsoftsansserif'],50)
上述方法将优先使用“方正粗黑宋简体”。
注意,如果要显示中文,那么一定要使用中文字体文件,比如“方正粗黑宋简体”,否则会出现文字乱码的现象。
拓展练习:使用系统字体“微软雅黑”。
2) font.Font()使用示例如下:
f = pygame.font.Font('C:/Users/Administrator/Desktop/willhar_.ttf',50)
从桌面加载了一个字体文件来创建字体对象,并设置字体大小为 50。注意,上述字体文件是在网上下载的,您也可以任意下载(https://free.homefont.cn/fonts-w.htm),或者使用系统库中的字体文件。
拓展练习:从上面给出的网站任意下载一种字体,加载并使用它。
3)字体对象方法pygame.font.Font.render() 使用示例如下:
import sys import pygame # 初始化 pygame.init() screen = pygame.display.set_mode((600,400)) #填充主窗口的背景颜色 screen.fill((20,90,50)) #设置窗口标题 pygame.display.set_caption('大师码') # 字体文件路径 C:/Windows/Fonts/simhei.ttf f = pygame.font.Font('C:/Windows/Fonts/simhei.ttf',50) # render(text, antialias, color, background=None) -> Surface text = f.render("网址:dashima.net",True,(255,0,0),(255,255,255)) #获得显示对象的 rect区域大小 textRect =text.get_rect() #设置显示对象居中 textRect.center = (300,200) screen.blit(text,textRect) while True: # 循环获取事件,监听事件 for event in pygame.event.get(): # 判断用户是否点了关闭按钮 if event.type == pygame.QUIT: #卸载所有pygame模块 pygame.quit() #终止程序 sys.exit() pygame.display.flip() #更新屏幕内容
程序运行结果如下所示:
拓展练习:使用系统字体“微软雅黑”,输出文本“我爱Python”.
下面使用 Freetype 模块来绘制文本内容,代码如下:
在这里使用到了在上面内容中提到的需要在网上下载的一种字体willhar_.ttf,点击下载,同学们也可以直接点击下载使用。
import sys, pygame import pygame.freetype pygame.init() # 设置位置变量 pos = [180, 50] # 设置颜色变量 GOLD = 255, 251, 0 BLACK = 0, 0, 0 screen = pygame.display.set_mode((600, 400)) pygame.display.set_caption("大师码") f1 = pygame.freetype.Font("C:/Users/91566/Desktop/dashima/willhar_.ttf", 45) # 注意,这里使用render_to() 来绘制文本内容,与render 相比,该方法无返回值 # 参数说明: # pos 绘制文本开始的位置,fgcolor表示前景色,bgcolor表示背景色,rotation表示文本旋转的角度 freeRect = f1.render_to(screen, pos, "I love dashima.net", fgcolor=GOLD, bgcolor=BLACK, rotation=35) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.display.update()
程序的运行结果如下所示:
拓展练习:使用 Freetype 模块来绘制文本内容,将前景色设置为红色,背景色设置为黑色,输出文本“我爱Python”并旋转45°。
小结 #
本节主要介绍了pygame.font模块的一些常用方法,具体学习了 font.SysFont()、 font.Font()和字体对象方法pygame.font.Font.render() 并给出实例。
练习 #
1.使用系统中加载字体方法选择“微软雅黑”字体,字号为60,创建文本内容为“大师码”的实例。
2.使用从外部加载字体文件的方法来绘制文本,可到网站https://free.homefont.cn/fonts-w.htm中任选一种字体下载并使用,创建字号为60,文本内容为“大师码”的实例。
3.使用字体对象方法将题目1中字体设置为加粗且具有下划线的格式。