rol*_*202 3 python pygame wxpython
您将图像blit到表面上以用作背景.然后按下按钮X在同一表面上显示图像,如何删除图像?到目前为止,我有这个,但后来我的背景中间有一个白色的矩形.
screen = pygame.display.set_mode(1280, 512)
screen.blit(background, (0,0))
while True:
pygame.display.flip() #flip is same as update
for event in pygame.event.get():
if (event.type == pygame.KEYDOWN):
if event.key == pygame.K_SPACE:
screen.blit(player, (x, y))
if event.key == pygame.K_BACKSPACE:
pygame.draw.rect(screen, [255,255,255], (x, y, 62,62))
Run Code Online (Sandbox Code Playgroud)
你可以在这里做两件事.你可以走简单的路线,再次画出背景......
if event.key == pygame.K_BACKSPACE:
screen.blit(background, (0,0))
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望它更有效,您可以让blit方法仅绘制播放器图像覆盖的背景部分.你可以这样做......
screen.blit(background, (x, y), pygame.Rect(x, y, 62, 62))
Run Code Online (Sandbox Code Playgroud)
第三个参数中的Rect将导致blit仅绘制位于图像上x,y位置的'background'的62x62像素部分.
当然,这假设玩家图像总是在背景中.如果玩家图像仅与背景部分重叠,我不完全确定会发生什么.它可能会抛出异常,或者它只是环绕到图像的另一侧.
如果这是一个相当小的项目,真的第一个选项应该没问题,但是如果你出于某种原因关注性能,请尝试第二个选项.