我在嘗試使用 pygame2.1 對文本進行 blit 時遇到了一些問題。
這是一些可重現的代碼:
import pygame
pygame.init()
win = pygame.display.set_mode((500, 500))
font = pygame.font.SysFont("Arial", 50)
text = font.render("Test", True, (255, 255, 255))
text_rect = text.get_rect(center=(250, 250))
run = True
while run:
for e in pygame.event.get():
if e.type == pygame.QUIT:
run = False
win.fill(0)
win.blit(text, text_rect)
pygame.display.update()
直接在主視窗上進行 Blitting 似乎沒有按預期運行。
但奇怪的是,在第二個表面上傳輸文本,然后在主視窗上傳輸表面本身確實有效!
import pygame
pygame.init()
win = pygame.display.set_mode((500, 500))
surf2 = pygame.Surface((400, 400))
font = pygame.font.SysFont("Arial", 50)
text = font.render("Test", True, (255, 255, 255))
text_rect = text.get_rect(center=(200, 200))
run = True
while run:
for e in pygame.event.get():
if e.type == pygame.QUIT:
run = False
win.fill(0)
surf2.fill((128, 128, 128))
surf2.blit(text, text_rect)
win.blit(surf2, (50, 50))
pygame.display.update()

我不明白為什么會這樣。這是pygame中的一個錯誤,還是我的電腦有問題?
uj5u.com熱心網友回復:
問題不在于文本,而在于pygame.Surface.fill. 代替
win.fill(0)
win.fill((0, 0, 0)
這是 Pygame 2.1.0 的 MacOS 版本中的一個已知錯誤,將在 Pygame 2.1.1 中修復。
請參閱修復奇怪的 MacOS 顯示沖浪奇怪 #2859。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/390780.html
上一篇:flake8在毒物測驗環境中失敗
