首頁  >  文章  >  後端開發  >  Python之Pygame的Font模組-如何使用文字和字體?

Python之Pygame的Font模組-如何使用文字和字體?

PHPz
PHPz轉載
2023-04-23 23:19:053171瀏覽

Pygame的Font文字和字體

Pygame 透過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 (透過檔案路徑建立字體物件)

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)

上述方法將優先使用「方正粗黑宋簡體」。

font.Font()

當我們想要在遊戲中引入比較酷的字體,而係統中又不存在時,我們可以使用另外一種方法,從外部載入字體檔案來繪製文字。其語法格式如下:

my_font = pygame.font.Font(filename, size)

參數說明如下:

  • #filename : 字串格式,表示字型檔案的所在路徑;

  • size : 設定字體的大小。

使用範例如下:

f = pygame.font.Font('C:/Users/Administrator/Desktop/willhar_.ttf',50)

從桌面載入了一個字體檔案來建立字體對象,並設定字體大小為 50。注意,上述字體檔案是在網路上下載的,您也可以任意下載點擊網址前往),或使用系統庫中的字體檔案。

字體物件方法

Pygame 為處理字體物件提供了一些常用方法,如下所示:

名稱說明此函數建立一個渲染了文字的Surface 物件該函數傳回渲染文字所需的尺寸大小,傳回值是一個一元組(width,height)是否為文字內容繪製底線#檢查文字是否繪製了底線啟動粗體字渲染#檢查文字是否使用粗體渲染啟動斜體字渲染取得字串中每個字元的詳細參數#檢查文字是否使用斜體渲染
pygame.font.Font.render() 
pygame.font.Font.size() 
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('Python自学网')
# 字体文件路径 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("网址:python.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()  # 更新屏幕内容

除了使用上述方法之外,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("Python自学网")
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 python.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()

以上是Python之Pygame的Font模組-如何使用文字和字體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除