gpt4 book ai didi

python - 我不明白 screen.fill() 是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:42 26 4
gpt4 key购买 nike

屏幕填充应该改变背景颜色。但是如果我在屏幕填充之前绘制任何东西,它不会显示,但如果我在它之后绘制一些东西,那么它可以在更新的背景颜色下正常工作。我正在谈论的 2 个代码:在循环中(i在循环前被初始化为0):

pygame.draw.rect(screen, (255-i, i, 0),`pygame.Rect(30,30,60,60)`
i=(i+1)%255
screen.fill((0, 0, 0))

这段代码显示黑屏

screen.fill((0,0,0))
pygame.draw.rect(screen, (255-i, i, 0), `pygame.Rect(30,30,60,60)`
i=(i+1)%255

这工作正常。为什么会这样?

最佳答案

您应该在代码中的某个位置调用 pygame.display.update(),理想情况下它应该是主循环的最后一行。可能在其他地方,但应该在您的代码片段之后。这是实际在您的电脑屏幕上绘制的命令。

pygame.draw 模块或 pygame.fill 等函数在内部表面(存储在您电脑内存中的对象)上绘制。你可以想象他们只是编辑一个二维数组,这个数组的每个元素都是一个 3 或 4 长的元组,存储像素的 RGB 或 RGBA 颜色。
在您调用 pygame.display.update() 之前,屏幕上不会实际显示任何内容。基本上 pygame.display.update() 读取该二维数组,并根据 此刻 中的值更改屏幕像素 pygame. display.update() 被调用。

这意味着在下面的代码片段中:

pygame.draw.rect(screen, (255-i, i, 0),`pygame.Rect(30,30,60,60)`
i=(i+1)%255
screen.fill((0, 0, 0))

您首先绘制矩形,然后用黑色填充整个屏幕,然后在代码调用 pygame.display.update() 时在 pc 屏幕上显示最终结果(黑屏)。没有机会看到矩形。

代替

screen.fill((0,0,0))
pygame.draw.rect(screen, (255-i, i, 0), `pygame.Rect(30,30,60,60)`
i=(i+1)%255

这里首先用黑色填充屏幕,然后绘制矩形,然后显示最终结果,即黑色背景和彩色矩形。

关于python - 我不明白 screen.fill() 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com