PyGame字体

一、创建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,字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,如果你想没有背景色(也就是透明),就不加这第四个参数。

三、中文字体

下面这个例子演示了用pygame书写中文

# -*- coding: utf-8 -*- 
# Time : 2019/1/29 21:39 
# Author : ***
import pygame
from 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()

 

你可能感兴趣的:(#,PyGame)