Pygame Font文本和å—体(å�«ç¤ºä¾‹ï¼‰
文本是任何一款游æˆ�ä¸ä¸�å�¯æˆ–缺的é‡�è¦�è¦�ç´ ä¹‹ä¸€ï¼ŒPygame 通过
Font 模å�—æ��供了两ç§�创建å—体(Font)对象的方法,分别是:
下�对这两�方法分分别进行介�:
使用示例如下:
注æ„�,如果è¦�æ˜¾ç¤ºä¸æ–‡ï¼Œé‚£ä¹ˆä¸€å®šè¦�ä½¿ç”¨ä¸æ–‡å—体文件,比如“æ–¹æ£ç²—黑宋简体”,å�¦åˆ™ä¼šå‡ºçŽ°æ–‡å—ä¹±ç �çš„çŽ°è±¡ï¼ˆç¼–ç¨‹å¸®ä¸‰ä¸ªå—æ— 法显示)。如下所示:

图1ï¼šæ˜¾ç¤ºä¸æ–‡ä¹±ç �
使用示例如下:
使用上述方法,我们å�¯ä»¥é�žå¸¸æ–¹ä¾¿åœ°å¯¹å—体进行渲染,或者获å�–å—体的相关信æ�¯ï¼Œæ¯”如å—体的高度ã€�是å�¦æ˜¯ç²—体ã€�斜体ç‰ä¿¡æ�¯ã€‚
上述方法ä¸ä½¿ç”¨æœ€å¤šè¦�æ•°ç¬¬ä¸€ä¸ªæ–¹æ³•ï¼Œå®ƒæ˜¯ç»˜åˆ¶æ–‡æœ¬å†…å®¹çš„å…³é”®æ–¹æ³•ï¼Œå…¶è¯æ³•æ ¼å¼�如下:
下�看一组简�的示例:
程��行结果如下所示:

图2:显示文本内容
除了使用上述方法之外,Pygame 为了增强å—体模å�—的功能,在新的版本ä¸å�ˆåŠ å…¥äº†å�¦å¤–一个å—体模å�—,它就是 Freetype 模å�—。该模å�—属于 Pygame 的高级模å�—, 它能够完全å�¯ä»¥å�–代 Font 模å�—,并且在 Font 模å�—的基础上å�ˆæ·»åŠ äº†è®¸å¤šæ–°åŠŸèƒ½ï¼Œæ¯”å¦‚è°ƒæ•´å—符间è·�离,å—体垂直模å¼�以å�Šé€†æ—¶é’ˆæ—‹è½¬æ–‡æœ¬ç‰ï¼ˆè¯¦æƒ…å�¯é˜…读官方文档)。
如果想 Freetype 模�,必须使用以下方�导包:

图3:绘制文本内容
pygame.font模å�—æ�¥åˆ›å»ºä¸€ä¸ªå—体对象,从而实现绘制文本的目的。该模å�—的常用方法如下所示:| 方法 | 说明 |
|---|---|
| pygame.font.init() | åˆ�始化å—体模å�— |
| pygame.font.quit() | å�–消åˆ�始化å—体模å�— |
| pygame.font.get_init() | 检查å—体模å�—是å�¦è¢«åˆ�始化,返回一个布尔值。 |
| pygame.font.get_default_font() | 获得默认å—体的文件å��。返回系统ä¸å—体的文件å�� |
| pygame.font.get_fonts() | 获å�–所有å�¯ä½¿ç”¨çš„å—体,返回值是所有å�¯ç”¨çš„å—体列表 |
| pygame.font.match_font() | 从系统的å—体库ä¸åŒ¹é…�å—体文件,返回值是完整的å—体文件路径 |
| pygame.font.SysFont() | 从系统的å—体库ä¸åˆ›å»ºä¸€ä¸ª Font 对象 |
| pygame.font.Font() | 从一个å—体文件创建一个 Font 对象 |
Font 模å�—æ��供了两ç§�创建å—体(Font)对象的方法,分别是:
- SysFont(从系统ä¸åŠ è½½å—体文件创建å—体对象)
- Font(通过文件路径创建å—体对象)
下�对这两�方法分分别进行介�:
1) font.SysFont()
直接从系统ä¸åŠ è½½å—体使用如下方法:pygame.font.SysFont(name, size, bold=False, italic=False)name:列表å�‚数值,表示è¦�从系统ä¸åŠ è½½çš„å—体å��称,它会按照列表ä¸çš„å…ƒç´ é¡ºåº�ä¾�次æ�œç´¢ï¼Œå¦‚æžœç³»ç»Ÿä¸æ²¡æœ‰åˆ—表ä¸çš„å—体,将使用 Pygame 默认的å—体。
- size:表示å—体的大å°�ï¼›
- bold:å—体是å�¦åŠ ç²—ï¼›
- italic:å—体是å�¦ä¸ºæ–œä½“。
使用示例如下:
print("获å�–ç³»ç»Ÿä¸æ‰€æœ‰å�¯ç”¨å—体",pygame.font.get_fonts())
my_font = pygame.font.SysFont(['æ–¹æ£ç²—黑宋简体','microsoftsansserif'],50)
上述方法将优先使用“æ–¹æ£ç²—黑宋简体”。注æ„�,如果è¦�æ˜¾ç¤ºä¸æ–‡ï¼Œé‚£ä¹ˆä¸€å®šè¦�ä½¿ç”¨ä¸æ–‡å—体文件,比如“æ–¹æ£ç²—黑宋简体”,å�¦åˆ™ä¼šå‡ºçŽ°æ–‡å—ä¹±ç �çš„çŽ°è±¡ï¼ˆç¼–ç¨‹å¸®ä¸‰ä¸ªå—æ— 法显示)。如下所示:

图1ï¼šæ˜¾ç¤ºä¸æ–‡ä¹±ç �
2) font.Font()
当我们想è¦�在游æˆ�ä¸å¼•入比较炫酷的å—体,而系统ä¸å�ˆä¸�å˜åœ¨æ—¶ï¼Œæˆ‘们å�¯ä»¥ä½¿ç”¨å�¦å¤–一ç§�æ–¹æ³•ï¼Œä»Žå¤–éƒ¨åŠ è½½å—体文件æ�¥ç»˜åˆ¶æ–‡æœ¬ã€‚å…¶è¯æ³•æ ¼å¼�如下:my_font = pygame.font.Font(filename, size)å�‚数说明如下:
- filename:å—ç¬¦ä¸²æ ¼å¼�,表示å—体文件的所在路径;
- size:设置å—体的大å°�。
使用示例如下:
f = pygame.font.Font('C:/Users/Administrator/Desktop/willhar_.ttf',50)
从桌é�¢åŠ è½½äº†ä¸€ä¸ªå—体文件æ�¥åˆ›å»ºå—体对象,并设置å—体大å°�为 50。注æ„�,上述å—体文件是在网上下载的,您也å�¯ä»¥ä»»æ„�下载(点击网å�€å‰�往),或者使用系统库ä¸çš„å—体文件。3) å—体对象方法
Pygame 为处ç�†å—体对象æ��供了一些常用方法,如下所示:| 方法 | 说明 |
|---|---|
| pygame.font.Font.render() | 该函数创建一个渲染了文本的 Surface 对象 |
| pygame.font.Font.size() | 该函数返回渲染文本所需的尺寸大�,返回值是一个一元组 (width,height) |
| pygame.font.Font.set_underline() | 是�为文本内容绘制下划线 |
| pygame.font.Font.get_underline() | 检查文本是�绘制了下划线 |
| pygame.font.Font.set_bold() | å�¯åŠ¨ç²—ä½“å—æ¸²æŸ“ |
| pygame.font.Font.get_bold() | 检查文本是�使用粗体渲染 |
| pygame.font.Font.set_italic() | å�¯åŠ¨æ–œä½“å—æ¸²æŸ“ |
| pygame.font.Font.metrics() | 获å�–å—ç¬¦ä¸²ä¸æ¯�一个å—符的详细å�‚æ•° |
| pygame.font.Font.get_italic() | 检查文本是�使用斜体渲染 |
| pygame.font.Font.get_linesize() | 获å�–å—体文本的行高 |
| pygame.font.Font.get_height() | 获å�–å—体的高度 |
| pygame.font.Font.get_ascent() | 获å�–å—体顶端到基准线的è·�离 |
| pygame.font.Font.get_descent() | 获å�–å—体底端到基准线的è·�离 |
使用上述方法,我们å�¯ä»¥é�žå¸¸æ–¹ä¾¿åœ°å¯¹å—体进行渲染,或者获å�–å—体的相关信æ�¯ï¼Œæ¯”如å—体的高度ã€�是å�¦æ˜¯ç²—体ã€�斜体ç‰ä¿¡æ�¯ã€‚
上述方法ä¸ä½¿ç”¨æœ€å¤šè¦�æ•°ç¬¬ä¸€ä¸ªæ–¹æ³•ï¼Œå®ƒæ˜¯ç»˜åˆ¶æ–‡æœ¬å†…å®¹çš„å…³é”®æ–¹æ³•ï¼Œå…¶è¯æ³•æ ¼å¼�如下:
render(text, antialias, color, background=None)�数说明如下所示:
- text:�绘制的文本内容
- antialias:布尔值å�‚数,是å�¦æ˜¯å¹³æ»‘å—体(抗锯齿)。
- color:设置å—体颜色;
- background:å�¯é€‰å�‚数,默认为 None,该å�‚数用æ�¥è®¾ç½®å—体的背景颜色。
下�看一组简�的示例:
import sys
import pygame
# �始化
pygame.init()
screen = pygame.display.set_mode((600,400))
#填充主窗�的背景颜色
screen.fill((20,90,50))
#设置窗å�£æ ‡é¢˜
pygame.display.set_caption('cè¯è¨€ä¸æ–‡ç½‘')
# å—体文件路径 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("网�:c.biancheng.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() #更新�幕内容
程��行结果如下所示:

图2:显示文本内容
除了使用上述方法之外,Pygame 为了增强å—体模å�—的功能,在新的版本ä¸å�ˆåŠ å…¥äº†å�¦å¤–一个å—体模å�—,它就是 Freetype 模å�—。该模å�—属于 Pygame 的高级模å�—, 它能够完全å�¯ä»¥å�–代 Font 模å�—,并且在 Font 模å�—的基础上å�ˆæ·»åŠ äº†è®¸å¤šæ–°åŠŸèƒ½ï¼Œæ¯”å¦‚è°ƒæ•´å—符间è·�离,å—体垂直模å¼�以å�Šé€†æ—¶é’ˆæ—‹è½¬æ–‡æœ¬ç‰ï¼ˆè¯¦æƒ…å�¯é˜…读官方文档)。
如果想 Freetype 模�,必须使用以下方�导包:
import pygame.freetype下é�¢ä½¿ç”¨ Freetype 模å�—æ�¥ç»˜åˆ¶æ–‡æœ¬å†…容,代ç �如下:
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("cè¯è¨€ä¸æ–‡ç½‘")
f1=pygame.freetype.Font("C:/Users/Administrator/Desktop/willhar_.ttf",45)
# 注æ„�,这里使用render_to() æ�¥ç»˜åˆ¶æ–‡æœ¬å†…容,与render ç›¸æ¯”ï¼Œè¯¥æ–¹æ³•æ— è¿”å›žå€¼
# �数说明:
# pos 绘制文本开始的�置,fgcolor表示�景色,bgcolor表示背景色,rotation表示文本旋转的角度
freeRect = f1.render_to(screen, pos,"I love c.biancheng.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()
程åº�è¿�行结果如下:
图3:绘制文本内容
关注公众å�·ã€Œç«™é•¿ä¸¥é•¿ç”Ÿã€�,在手机上阅读所有教程,éš�æ—¶éš�地都能å¦ä¹ 。本公众å�·ç”±Cè¯è¨€ä¸æ–‡ç½‘站长亲自è¿�è�¥ï¼Œé•¿æœŸæ›´æ–°ï¼Œå�šæŒ�原创。

微信扫ç �关注公众å�·
优秀文ç«
- strlen函数与sizeof的区别,Cè¯è¨€strlen与sizeof的区别详解
- Java内部类是什么?
- SELinux auditd日志使用方法详解
- Linux读写执行æ�ƒé™�(-rã€�-wã€�-x)的真æ£å�«ä¹‰æ˜¯ä»€ä¹ˆï¼Ÿ
- 安装Linux系统对硬件有什么�求?
- Django项目部署�程与Nginx安装�置(超详细)
- pthread_exit()函数:终æ¢çº¿ç¨‹
- MyBatis whereæ ‡ç¾
- SQL UNIQUE:唯一约�
- 线性回归算法详解