在 pygame 中创建一个 window 而不显示它

Creating a window in pygame without displaying it

我在 pygame 中使用以下方法创建了一个屏幕:

screen = pygame.display.set_mode((width,height))

然后我在上面随机画了200个灰度圆圈,然后将屏幕保存为图像。 (我需要将此屏幕保存为图像,以便稍后将其与目标图像进行比较):

pygame.image.save(screen, "Circles.png")

现在,我需要通过将包含所有圆的圆参数的numpy数组放入一个循环中,并将一个大数字作为其迭代值来随机更改不同圆的不同参数。

而且我需要在屏幕上重新绘制变异的圆圈(在每次迭代结束时)并再次将该屏幕另存为 png 图像。

现在的问题是,每次我使用 pygame.display.set_mode((width,height)) 它都会打开显示 window,这会显着降低我的程序速度。

我想创建一个屏幕并将其保存在一个变量中,但不需要在每次迭代时都显示该屏幕。我一直没能弄清楚要使用什么命令来避免显示屏幕。

感谢您的帮助。

如果您不想 window 出现,请尝试像这样创建表面:

screen = pygame.Surface((width,height))

然后你可以在这个表面上画出你的圆圈,并像以前一样保存它。正如其他人所说,使用 fill() 方法清除表面。

我可能最终会使用这样的东西。这仍然会弹出一个屏幕,但它会很小并且永远不会更新。

import pygame
from pygame.locals import *

pygame.init()

def circle_drawing(surf):
    pass
    #your circle drawing function using passed in surface

DISPLAY = (1, 1)
DEPTH = 32
FLAGS = 0
screen = pygame.display.set_mode(DISPLAY, FLAGS, DEPTH)
work_surface  = pygame.Surface((500,500))
count = 0
while True:
    ws = circle_drawing(work_surface.copy())
    pygame.image.save(ws, "circles_" + str(count)+".png")
    count +=1