将显示设置为 8 位并设置调色板
Make the display 8 bit and set palette
我有一个 8 位颜色深度表面和一些 8 位颜色,我这样设置表面:
self.surf = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT)).convert(8)
self.surf.set_palette(self.colours)
我尝试将显示器设置为 8 位,这样我就不必在表面上进行 blit 操作,因为我想知道是否可以直接在显示屏上设置像素。首先我尝试了:
screen = pygame.display.set_mode(size = (SCREEN_WIDTH, SCREEN_HEIGHT), depth = 8)
和
pygame.display.set_palette(self.colours)
但是它说:
pygame.error: Display mode is not colormapped
所以我尝试了:
self.surf = pygame.display.get_surface().convert(8)
self.surf.set_palette(self.colours)
和:
self.surf.set_at((i, index), the_colour)
但似乎没有任何效果。有没有一种方法可以像使用表面和 set_at?
一样直接对显示器进行寻址
这是 pygame 2 中的向后兼容性错误。https://github.com/pygame/pygame/issues/991。
您可以通过降级到 pygame 1.9.6 来解决这个问题,但我建议继续使用 pygame 2 以利用所有新功能。
我有一个 8 位颜色深度表面和一些 8 位颜色,我这样设置表面:
self.surf = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT)).convert(8)
self.surf.set_palette(self.colours)
我尝试将显示器设置为 8 位,这样我就不必在表面上进行 blit 操作,因为我想知道是否可以直接在显示屏上设置像素。首先我尝试了:
screen = pygame.display.set_mode(size = (SCREEN_WIDTH, SCREEN_HEIGHT), depth = 8)
和
pygame.display.set_palette(self.colours)
但是它说:
pygame.error: Display mode is not colormapped
所以我尝试了:
self.surf = pygame.display.get_surface().convert(8)
self.surf.set_palette(self.colours)
和:
self.surf.set_at((i, index), the_colour)
但似乎没有任何效果。有没有一种方法可以像使用表面和 set_at?
一样直接对显示器进行寻址这是 pygame 2 中的向后兼容性错误。https://github.com/pygame/pygame/issues/991。
您可以通过降级到 pygame 1.9.6 来解决这个问题,但我建议继续使用 pygame 2 以利用所有新功能。