溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python之Pygame的Font文本和字體怎么使用

發(fā)布時(shí)間:2023-04-03 15:43:00 來源:億速云 閱讀:146 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Python之Pygame的Font文本和字體怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Pygame的Font文本和字體

Pygame 通過pygame.font模塊來創(chuàng)建一個(gè)字體對(duì)象,從而實(shí)現(xiàn)繪制文本的目的。
該模塊的常用方法如下所示:

名稱說明
pygame.font.init()初始化字體模塊
pygame.font.quit() 取消初始化字體模塊
pygame.font.get_init() 檢查字體模塊是否被初始化,返回一個(gè)布爾值。
pygame.font.get_default_font() 獲得默認(rèn)字體的文件名。返回系統(tǒng)中字體的文件名
pygame.font.get_fonts() 獲取所有可使用的字體,返回值是所有可用的字體列表
pygame.font.match_font() 從系統(tǒng)的字體庫中匹配字體文件,返回值是完整的字體文件路徑
pygame.font.SysFont() 從系統(tǒng)的字體庫中創(chuàng)建一個(gè) Font 對(duì)象
pygame.font.Font()從一個(gè)字體文件創(chuàng)建一個(gè) Font 對(duì)象

Font 模塊提供了兩種創(chuàng)建字體(Font)對(duì)象的方法,分別是:

  • SysFont (從系統(tǒng)中加載字體文件創(chuàng)建字體對(duì)象)

  • Font (通過文件路徑創(chuàng)建字體對(duì)象)

font.SysFont()

直接從系統(tǒng)中加載字體使用如下方法:

pygame.font.SysFont(name, size, bold=False, italic=False)

參數(shù)說明如下:

  • name : 列表參數(shù)值,表示要從系統(tǒng)中加載的字體名稱,它會(huì)按照列表中的元素順序依次搜索,如果系統(tǒng)中沒有列表中的字體,將使用 Pygame 默認(rèn)的字體。

  • size : 表示字體的大小;

  • bold : 字體是否加粗;

  • italic : 字體是否為斜體。

使用示例如下:

print("獲取系統(tǒng)中所有可用字體",pygame.font.get_fonts())
my_font = pygame.font.SysFont(['方正粗黑宋簡(jiǎn)體','microsoftsansserif'],50)

上述方法將優(yōu)先使用“方正粗黑宋簡(jiǎn)體”。

font.Font()

當(dāng)我們想要在游戲中引入比較炫酷的字體,而系統(tǒng)中又不存在時(shí),我們可以使用另外一種方法,從外部加載字體文件來繪制文本。其語法格式如下:

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

參數(shù)說明如下:

  • filename : 字符串格式,表示字體文件的所在路徑;

  • size : 設(shè)置字體的大小。

使用示例如下:

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

從桌面加載了一個(gè)字體文件來創(chuàng)建字體對(duì)象,并設(shè)置字體大小為 50。注意,上述字體文件是在網(wǎng)上下載的,您也可以任意下載點(diǎn)擊網(wǎng)址前往),或者使用系統(tǒng)庫中的字體文件。

字體對(duì)象方法

Pygame 為處理字體對(duì)象提供了一些常用方法,如下所示:

名稱說明
pygame.font.Font.render() 該函數(shù)創(chuàng)建一個(gè)渲染了文本的 Surface 對(duì)象
pygame.font.Font.size() 該函數(shù)返回渲染文本所需的尺寸大小,返回值是一個(gè)一元組 (width,height)
pygame.font.Font.set_underline() 是否為文本內(nèi)容繪制下劃線
pygame.font.Font.get_underline() 檢查文本是否繪制了下劃線
pygame.font.Font.set_bold() 啟動(dòng)粗體字渲染
pygame.font.Font.get_bold() 檢查文本是否使用粗體渲染
pygame.font.Font.set_italic() 啟動(dòng)斜體字渲染
pygame.font.Font.metrics() 獲取字符串中每一個(gè)字符的詳細(xì)參數(shù)
pygame.font.Font.get_italic() 檢查文本是否使用斜體渲染
pygame.font.Font.get_linesize() 獲取字體文本的行高
pygame.font.Font.get_height() 獲取字體的高度
pygame.font.Font.get_ascent() 獲取字體頂端到基準(zhǔn)線的距離
pygame.font.Font.get_descent() 獲取字體底端到基準(zhǔn)線的距離

使用上述方法,我們可以非常方便地對(duì)字體進(jìn)行渲染,或者獲取字體的相關(guān)信息,比如字體的高度、是否是粗體、斜體等信息。

上述方法中使用最多要數(shù)第一個(gè)方法,它是繪制文本內(nèi)容的關(guān)鍵方法,其語法格式如下:

render(text, antialias, color, background=None)

參數(shù)說明如下:

  • text : 要繪制的文本內(nèi)容

  • antialias : 布爾值參數(shù),是否是平滑字體(抗鋸齒)。

  • color : 設(shè)置字體顏色;

  • background : 可選參數(shù),默認(rèn)為 None,該參數(shù)用來設(shè)置字體的背景顏色。

下面看一組簡(jiǎn)單的示例:

import sys
import pygame

# 初始化
pygame.init()
screen = pygame.display.set_mode((600, 400))
# 填充主窗口的背景顏色
screen.fill((20, 90, 50))
# 設(shè)置窗口標(biāo)題
pygame.display.set_caption('Python自學(xué)網(wǎng)')
# 字體文件路徑 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("網(wǎng)址:python.net", True, (255, 0, 0), (255, 255, 255))
# 獲得顯示對(duì)象的 rect區(qū)域大小
textRect = text.get_rect()
# 設(shè)置顯示對(duì)象居中
textRect.center = (300, 200)
screen.blit(text, textRect)
while True:
    # 循環(huán)獲取事件,監(jiān)聽事件
    for event in pygame.event.get():
        # 判斷用戶是否點(diǎn)了關(guān)閉按鈕
        if event.type == pygame.QUIT:
            # 卸載所有pygame模塊
            pygame.quit()
            # 終止程序
            sys.exit()
    pygame.display.flip()  # 更新屏幕內(nèi)容

除了使用上述方法之外,Pygame 為了增強(qiáng)字體模塊的功能,在新的版本中又加入了另外一個(gè)字體模塊,它就是 Freetype 模塊。該模塊屬于 Pygame 的高級(jí)模塊, 它能夠完全可以取代 Font 模塊,并且在 Font 模塊的基礎(chǔ)上又添加了許多新功能,比如調(diào)整字符間距離,字體垂直模式以及逆時(shí)針旋轉(zhuǎn)文本等(詳情可閱讀官方文檔)。

如果想 Freetype 模塊,必須使用以下方式導(dǎo)包:

import pygame.freetype

下面使用 Freetype 模塊來繪制文本內(nèi)容,代碼如下:

import sys, pygame
import pygame.freetype

pygame.init()
# 設(shè)置位置變量
pos = [180, 50]
# 設(shè)置顏色變量
GOLD = 255, 251, 0
BLACK = 0, 0, 0
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Python自學(xué)網(wǎng)")
f1 = pygame.freetype.Font("C:/Users/Administrator/Desktop/willhar_.ttf", 45)
# 注意,這里使用render_to() 來繪制文本內(nèi)容,與render 相比,該方法無返回值
# 參數(shù)說明:
# pos 繪制文本開始的位置,fgcolor表示前景色,bgcolor表示背景色,rotation表示文本旋轉(zhuǎn)的角度
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文本和字體怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI