Python PyGame负片颜色/表面
我正在用PyGame创建一个游戏。在那里我想创造负面效果,所有的屏幕都变成负面 这对于像rect这样的简单形状非常容易:(使用Python PyGame负片颜色/表面,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,我正在用PyGame创建一个游戏。在那里我想创造负面效果,所有的屏幕都变成负面 这对于像rect这样的简单形状非常容易:(使用rect而不是pygame.draw.rect) 但我不知道如何在图像上产生这种效果。我试着做负片图像复制,但若这种效果不是即时的,会逐渐填满屏幕,那个么这将并没有帮助 # negative image copy def negcopy(image): neg = pygame.Surface(image.get_size()) for y in ran
rect
而不是pygame.draw.rect
)
但我不知道如何在图像上产生这种效果。我试着做负片图像复制,但若这种效果不是即时的,会逐渐填满屏幕,那个么这将并没有帮助
# negative image copy
def negcopy(image):
neg = pygame.Surface(image.get_size())
for y in range(image.get_height()):
for x in range(image.get_width()):
c = image.get_at((x, y)
neg.set_at((x, y), (255 - color[0], 255 - color[1], 255 - color[2], 255))
return neg
为此,您可以与特殊标志参数BLEND\u SUB
一起使用。创建具有相同大小的完全白色图像,并减去原始图像:
neg=pygame.Surface(image.get\u size())
负填充((255,255,255))
blit(图像,(0,0),特殊标志=pygame.BLEND\u SUB)
您可能想看看pixarray,它是一个存储像素的引擎盖下缓冲区的接口,具有更快的读/写操作。
# negative image copy
def negcopy(image):
neg = pygame.Surface(image.get_size())
for y in range(image.get_height()):
for x in range(image.get_width()):
c = image.get_at((x, y)
neg.set_at((x, y), (255 - color[0], 255 - color[1], 255 - color[2], 255))
return neg