小工具知识网

当前位置: 首页 > 行业知识 > PyGame字体详解

行业知识

PyGame字体详解

2026-11-03 11:22:43 来源:互联网转载

文章目录

    • 字体初始化
    • 获取字体
    • 字体对象
    • 内���方法

      字体初始化

      在pygame程序中,第一步势必进行初始化,即调用pygame.init()函数,而此初始化过程,则顺便包含了字体初始化,即默不作声地调用了pygame.font.init()函数。下面通过pygame.font中的get_init()函数进行查询,结果如下

      import pygamefrom pygame import fontfont.get_init()      # Falsepygame.init()font.get_init()      # Truefont.quit()font.get_init()      # False

      其中quit用于取消字体的初始化。

      获取字体

      pygame可以很方便地判断当前字体,并且能够获取系统字体,示例如下

      font.get_default_font() # 'freesansbold.ttf'lst = font.get_fonts()print(lst[:5])# ['arial', 'arialblack', 'bahnschrift', 'calibri', 'cambria']font.match_font('arial')#'C:\WINDOWS\Fonts\ARIALN.TTF'

      其中,

      • get_default_font() 获取默认字体
      • get_fonts() 获取系统所有的字体列表
      • font.match_font(‘arial’) 获取系统中名为arial的字体的路径

        字体对象

        pygame中封装了字体类,在实例化过程中,一般需要两个参数,分别是字体路径以及文字尺寸。在初始化字体后,可通过render来渲染具体的文字。

        path = 'C:\WINDOWS\Fonts\ARIALN.TTF'font.init()f = font.Font(path, 50)msg = f.render("FONT", True, (255, 255,255))

        其中,render函数的参数如下

        • text 将要展示的文字
        • antialias 是否开启抗锯齿
        • color 颜色,(255,255,255)表示纯白

          在设置好字体后,接下来便可在主循环中展示

          pygame.init()screen = pygame.display.set_mode((400, 200))while True:    if pygame.QUIT in [e.type for e in pygame.event.get()]:        pygame.quit()        break    screen.fill((0,0,0))    screen.blit(msg, (150, 60))    pygame.display.flip()

          效果如下

          内置方法

          上面的FONT其实并不协调,主要是尺寸与窗口并不匹配,从而无法做到居中,为此可通过size函数获取文字所占据的像素尺寸。

          # 由于上面的代码段执行了pygame.quit(),所以需要重新初始化pygame.init()f = font.Font(path, 50)f.size("FONT")  # (112, 58)screen = pygame.display.set_mode((200, 100))while True:    if pygame.QUIT in [e.type for e in pygame.event.get()]:        pygame.quit()        break    screen.fill((0,0,0))    screen.blit(msg, (44, 21))    pygame.display.flip()

          效果如下

          如果想获得每个文字的尺寸,则可使用metrics(text)方法,其返回值是一个列表,每个元素都代表text中的一个文字尺寸,格式为(minx, maxx, miny, maxy, advance),前四项比较好理解,advance表示前进偏移量。

          另有一些获取文字尺寸的函数如下

          • get_linesize() 获取字体文本的行间距
          • get_height() 获取字体的高度
          • get_ascent() 获取字体的上升高度,即从字体基线到字体顶部的像素数。
          • get_descent() 获取字体的下降高度,即从字体基线到字体底部的像素数。

            Font类中还内置了一些方法,用于设置或获取字体格式,这些方法一般由set和get成对出现

            功能说明setget
            下划线set_underline(b)get_underline()
            粗体set_bold(b)get_bold()
            斜体set_italic()get_italic()

上一篇:怎么给鸡按摩图片图库?

下一篇:初识指针(2)<C语言>