Pyhhon之Pygame的Font文本和字體
Pygame的Font文本和字體
Pygame 通過pygame.font
模塊來創(chuàng)建一個(gè)字體對象,從而實(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 對象 |
pygame.font.Font() | 從一個(gè)字體文件創(chuàng)建一個(gè) Font 對象 |
Font
模塊提供了兩種創(chuàng)建字體(Font)對象的方法,分別是:
SysFont
(從系統(tǒng)中加載字體文件創(chuàng)建字體對象)Font
(通過文件路徑創(chuàng)建字體對象)
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(['方正粗黑宋簡體','microsoftsansserif'],50)
上述方法將優(yōu)先使用“方正粗黑宋簡體”。
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)建字體對象,并設(shè)置字體大小為 50。注意,上述字體文件是在網(wǎng)上下載的,您也可以任意下載點(diǎn)擊網(wǎng)址前往),或者使用系統(tǒng)庫中的字體文件。
字體對象方法
Pygame 為處理字體對象提供了一些常用方法,如下所示:
名稱 | 說明 |
---|---|
pygame.font.Font.render() | 該函數(shù)創(chuàng)建一個(gè)渲染了文本的 Surface 對象 |
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)線的距離 |
使用上述方法,我們可以非常方便地對字體進(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è)置字體的背景顏色。
下面看一組簡單的示例:
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)) # 獲得顯示對象的 rect區(qū)域大小 textRect = text.get_rect() # 設(shè)置顯示對象居中 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()
到此這篇關(guān)于Pyhhon之Pygame的Font文本和字體的文章就介紹到這了,更多相關(guān)Pygame的Font文本和字體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
scrapy框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)
本文主要介紹了scrapy?框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01使用Python快速打開一個(gè)百萬行級(jí)別的超大Excel文件的方法
這篇文章主要介紹了使用Python快速打開一個(gè)百萬行級(jí)別的超大Excel文件的方法,本文通過實(shí)例代碼給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03使用python itchat包爬取微信好友頭像形成矩形頭像集的方法
今天小編就為大家分享一篇使用python itchat包爬取微信好友頭像形成矩形頭像集的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02Python如何實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用
這篇文章主要介紹了Python如何實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08python時(shí)間日期相加減的實(shí)現(xiàn)示例
在實(shí)際開發(fā)中,我們經(jīng)常需要對日期進(jìn)行加減操作,本文主要介紹了python時(shí)間日期相加減的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02用python實(shí)現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計(jì)
今天教各位小伙伴學(xué)習(xí)怎么用python實(shí)現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計(jì),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴有很大的幫助,需要的朋友可以參考下2021-05-05python自動(dòng)定時(shí)任務(wù)schedule庫的使用方法
當(dāng)你需要在 Python 中定期執(zhí)行任務(wù)時(shí),schedule 庫是一個(gè)非常實(shí)用的工具,它可以幫助你自動(dòng)化定時(shí)任務(wù),本文給大家介紹了python自動(dòng)定時(shí)任務(wù)schedule庫的使用方法,需要的朋友可以參考下2024-02-02