我刚刚开始使用PyGame,我试图弄清楚如何水平和/或垂直翻转文本,但到目前为止,没有运气。到目前为止,这是我的代码:
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)
basicfont = pygame.font.SysFont('pricedown', 100)
text = basicfont.render((dateoftime), True, White, Black)
textrect = text.get_rect()
textrect.centerx = screen.get_rect().centerx
textrect.centery = screen.get_rect().centery
pygame.transform.flip(screen,True,False)
screen.fill(Black)
screen.blit(text, textrect)
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
clock.tick(50)
我想做的另一件事是将文本居中,但更改它的y值。例如,将x值保持为中心(从textrect计算),但将y值更改为200或600.当我想要更改x值时也是如此。另外,我需要更改哪些部分来显示每秒更新的当前时间(H:M:S)。我试图改变“clock.time(50)”中的数量,但这并没有削减它。
如果一般存在任何错误,我们将非常感谢您的更正。谢谢。
答案 0 :(得分:1)
只需在渲染后翻转文本即可。首先删除pygame.transform.flip(screen,True,False)
,然后在渲染后立即添加text = pygame.transform.flip(text, True, False)
:
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)
basicfont = pygame.font.SysFont('pricedown', 100)
text = basicfont.render((dateoftime), True, White, Black)
# ADDED!
text = pygame.transform.flip(text, True, False) # Flip the text vertically.
textrect = text.get_rect()
textrect.centerx = screen.get_rect().centerx
textrect.centery = screen.get_rect().centery
#pygame.transform.flip(screen,True,False) # Get rid of this.
screen.fill(Black)
screen.blit(text, textrect)
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
clock.tick(50)