Pygame | 3 – 字体

创建font对象

Pygame可以直接调用系统字体,或者也可以使用TTF字体。

函数:SysFont(name, size, bold=False, italic=False)

my_font = pygame.font.SysFont(“arial”, 16)

第一个参数是字体名,第二个是大小。该函数返回一个系统字体,这个字体与“bold”和“italic”两个flag相匹配。如果找不到,就会使用pygame的默认字体。可以使用**pygame.font.get_fonts()**来获得当前系统所有可用字体。

函数:Font(filename, size) 或者 Font(object, size)

my_font = pygame.font.Font(“simsun.ttf”, 16)

使用这个方法,需要把字体文件随同游戏一起发送,这样可以避免使用者机器上没有所需的字体(TTF字体集),注意最后要将字体的名称改为英文,也就是说路径中不能有中文

使用字体

函数:render(text, antialias, color, background=None)

text_surface = my_font.render(“Pygame is cool!”, True, (0,0,0), (255, 255, 255))

第一个参数文字;第二个参数是个布尔值,表示是否开启抗锯齿,如果为True,字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,如果你想没有背景色(也就是透明),就不加这第四个参数。

案例

import pygame
om pygame.locals import *
from sys import exit

if name == "main":
pygame.init()
SCREEN_SIZE = (640, 480)
screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)

font = pygame.font.SysFont("arial", 16)
# font = pygame.font.Font('./ttf/font.ttf',16) #*.ttf是自己命名的TTF文件
font_height = font.get_linesize()
event_text = []

while True:
    event = pygame.event.wait()
    event_text.append(str(event))
    #获得时间的名称
    event_text = event_text[int(-SCREEN_SIZE[1]/font_height):]
    #这个切片操作保证了event_text里面只保留一个屏幕的文字

    if event.type == QUIT:
        exit()

    screen.fill((255, 255, 255))

    y = SCREEN_SIZE[1]-font_height
    #找一个合适的起笔位置,最下面开始但是要留一行的空
    for text in reversed(event_text):
        screen.blit(font.render(text, True, (0, 0, 0)), (0, y))
        #以后会讲
        y-=font_height
        #把笔提一行

    pygame.display.update()

原文链接:https://blog.csdn.net/Hubz131/article/details/86740969

发表评论