Один из вариантов - определить размер текста по размеру поверхности, залить его тем цветом, который вам нужен, и пометить текст на нем. Например, вы можете сделать это:
text = font.render('Hello World!', True, (255, 255, 255)
temp_surface = pygame.Surface(text.get_size())
temp_surface.fill((192, 192, 192))
temp_surface.blit(text, (0, 0))
screen.blit(temp_surface, (0, 0))
Это создаст временную поверхность, которая должна заполнить прозрачные пиксели текстовой поверхности. Есть и другой вариант использования set_at()
, но он слишком дорог в вычислительной мощности для того, что вы делаете, и лучше всего его использовать для предварительной обработки поверхностей.
Я уверен, что лучший вариант с использованием BLEND_RGBA_MULT придет от более опытного пользователя. Я не слишком хорош в режимах наложения.