行业知识
PyGame字体详解
2026-11-03 11:22:43
来源:互联网转载
文章目录
- 字体初始化
- 获取字体
- 字体对象
- 内���方法
字体初始化
在pygame程序中,第一步势必进行初始化,即调用pygame.init()函数,而此初始化过程,则顺便包含了字体初始化,即默不作声地调用了pygame.font.init()函数。下面通过pygame.font中的get_init()函数进行查询,结果如下
import pygamefrom pygame import fontfont.get_init() # Falsepygame.init()font.get_init() # Truefont.quit()font.get_init() # False
其中quit用于取消字体的初始化。
获取字体
pygame可以很方便地判断当前字体,并且能够获取系统字体,示例如下
font.get_default_font() # 'freesansbold.ttf'lst = font.get_fonts()print(lst[:5])# ['arial', 'arialblack', 'bahnschrift', 'calibri', 'cambria']font.match_font('arial')#'C:\WINDOWS\Fonts\ARIALN.TTF'其中,
- get_default_font() 获取默认字体
- get_fonts() 获取系统所有的字体列表
- font.match_font(‘arial’) 获取系统中名为arial的字体的路径
字体对象
pygame中封装了字体类,在实例化过程中,一般需要两个参数,分别是字体路径以及文字尺寸。在初始化字体后,可通过render来渲染具体的文字。
path = 'C:\WINDOWS\Fonts\ARIALN.TTF'font.init()f = font.Font(path, 50)msg = f.render("FONT", True, (255, 255,255))其中,render函数的参数如下
- text 将要展示的文字
- antialias 是否开启抗锯齿
- color 颜色,(255,255,255)表示纯白
在设置好字体后,接下来便可在主循环中展示
pygame.init()screen = pygame.display.set_mode((400, 200))while True: if pygame.QUIT in [e.type for e in pygame.event.get()]: pygame.quit() break screen.fill((0,0,0)) screen.blit(msg, (150, 60)) pygame.display.flip()
效果如下
内置方法
上面的FONT其实并不协调,主要是尺寸与窗口并不匹配,从而无法做到居中,为此可通过size函数获取文字所占据的像素尺寸。
# 由于上面的代码段执行了pygame.quit(),所以需要重新初始化pygame.init()f = font.Font(path, 50)f.size("FONT") # (112, 58)screen = pygame.display.set_mode((200, 100))while True: if pygame.QUIT in [e.type for e in pygame.event.get()]: pygame.quit() break screen.fill((0,0,0)) screen.blit(msg, (44, 21)) pygame.display.flip()效果如下
如果想获得每个文字的尺寸,则可使用metrics(text)方法,其返回值是一个列表,每个元素都代表text中的一个文字尺寸,格式为(minx, maxx, miny, maxy, advance),前四项比较好理解,advance表示前进偏移量。
另有一些获取文字尺寸的函数如下
- get_linesize() 获取字体文本的行间距
- get_height() 获取字体的高度
- get_ascent() 获取字体的上升高度,即从字体基线到字体顶部的像素数。
- get_descent() 获取字体的下降高度,即从字体基线到字体底部的像素数。
Font类中还内置了一些方法,用于设置或获取字体格式,这些方法一般由set和get成对出现
功能说明 set get 下划线 set_underline(b) get_underline() 粗体 set_bold(b) get_bold() 斜体 set_italic() get_italic()
上一篇:怎么给鸡按摩图片图库?
下一篇:初识指针(2)<C语言>