python-3.x 更新()刷新窗口的整个宽度,而不是只刷新请求的矩形

pcww981p  于 2023-02-26  发布在  Python
关注(0)|答案(1)|浏览(112)

我发现Pygame,并坚持一些有问题的行为,我不能弄清楚。
我尝试用下面的代码刷新窗口中心的一个80 px的正方形,但是整行都变成蓝色,而不是预期的正方形。这是正常的行为吗?有人能帮我理解为什么会发生这种情况吗?

  • 使用pygame 2.1.3 / Python 3.11.1 / macOS 13.1操作系统 *
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 400))
screen.fill((255,0,0))
pygame.display.update(((160,160,80,80)))

wd2eg0qa

wd2eg0qa1#

pygame.display.update()的文档没有明确说明这一点,但是矩形并不是要限制屏幕更新到该区域,而是至少要以最有效的方式更新该区域。哪种方法最有效可能取决于系统。请注意,窗口是按行组织的,因此更新一组完整的连续行可能比单独更新许多行部分更有效。
使用pygame.Surface.set_clip()将可修改曲面限制为特定区域:

screen.set_clip((160,160,80,80))
screen.fill((255,0,0))
pygame.display.update()

相关问题