将显示设为8位并设置调色板



我有一个8位颜色深度的表面和一些8位颜色,我这样设置表面:

self.surf = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT)).convert(8)
self.surf.set_palette(self.colours)

我试着让显示器变成8位,这样我就不必闪电般地把表面打到它上,因为我想知道我是否可以直接设置显示屏上的像素。我第一次尝试:

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)

但似乎什么都不起作用。有没有一种方法可以直接处理显示,类似于使用surface和set_at?

这是pygame 2中的一个向后兼容性错误。https://github.com/pygame/pygame/issues/991.

你可以通过降级到pygame 1.9.6来解决这个问题,但我建议你留在pygame 2上,以利用所有新功能。

相关内容

  • 没有找到相关文章

最新更新