You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pygame中水平或垂直翻转文本?

搞定Pygame文本水平/垂直翻转的方法

嘿,刚接触Pygame的话,文本翻转这个问题其实很容易解决——核心是要记住:Pygame里的文本是先渲染成Surface对象,再对这个Surface做翻转操作,而不是直接处理字符串。我给你一步步拆解解决方案:

关键思路

Pygame没有直接翻转文本的API,但pygame.transform.flip()函数可以对任何Surface进行水平/垂直翻转,所以我们只需要:

  1. 用字体渲染出文本的Surface
  2. 对这个Surface调用flip()实现翻转
  3. 把翻转后的Surface绘制到屏幕上

完整示例代码(补全你的不完整部分)

我把你的代码补全并添加了翻转逻辑,你可以直接运行试试:

import pygame, sys, datetime, os
from pygame.locals import *
os.environ['SDL_VIDEO_CENTERED'] = '1'
now = datetime.datetime.now()
dateoftime = now.strftime("%d-%m-%Y")
pygame.init()
screen = pygame.display.set_mode((768, 768), pygame.NOFRAME)
clock = pygame.time.Clock()
White=(255,255,255)
Black=(0,0,0)

# 补全字体初始化:这里用系统自带的Arial,你可以换成自己想用的字体名称
basicfont = pygame.font.SysFont('Arial', 48, bold=True)

# 渲染原始文本Surface(参数:文本,抗锯齿,文字颜色,背景色)
original_text = basicfont.render(dateoftime, True, White, Black)
# 水平翻转:第二个参数True=水平翻转,第三个False=不垂直翻转
flipped_horizontal = pygame.transform.flip(original_text, True, False)
# 垂直翻转:第二个参数False=不水平翻转,第三个True=垂直翻转
flipped_vertical = pygame.transform.flip(original_text, False, True)
# 同时水平+垂直翻转(相当于180度旋转)
flipped_both = pygame.transform.flip(original_text, True, True)

while True:
    screen.fill(Black)
    
    # 绘制不同状态的文本到屏幕不同位置
    screen.blit(original_text, (50, 50))          # 原始文本
    screen.blit(flipped_horizontal, (50, 150))    # 水平翻转
    screen.blit(flipped_vertical, (50, 250))      # 垂直翻转
    screen.blit(flipped_both, (50, 350))          # 双向翻转
    
    # 处理退出事件
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN and event.key == K_ESCAPE:
            pygame.quit()
            sys.exit()
    
    pygame.display.update()
    clock.tick(60)

几个重要提醒

  • 如果你的字体是自定义的本地字体文件(比如pricedown.ttf),要改用pygame.font.Font()加载:
    basicfont = pygame.font.Font('pricedown.ttf', 48)
    
    注意要确保字体文件和你的代码在同一个文件夹里,或者给出完整路径。
  • 如果需要实时更新文本(比如显示当前时间),要把渲染和翻转的代码放到while循环里面,不然只会显示程序启动时的时间。
  • pygame.transform.flip()不会修改原始Surface,而是返回一个新的翻转后的Surface,所以你可以保留原始文本同时使用多种翻转状态。

内容的提问来源于stack exchange,提问作者A.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:53:23