繁体   English   中英

Pygame:用颜色填充文本的透明区域

[英]Pygame: Fill transparent areas of text with a color

我想要使​​用的几种字体基本上都是字母轮廓,但内部是透明的。 我怎样才能用颜色填充这些字体的内部区域? 我怀疑它会使用特殊的blitting RGBA_BLEND模式,但我不熟悉它们的功能。

以下是我使用的字体示例: https//www.dafont.com/fipps.font?back = bitmap

现在,我只是将字体渲染到表面上,并且我已经为此编写了辅助函数。 理想情况下,我可以将其集成到我的功能中。

def renderText(surface, text, font, color, position):
    x, y = position[0], position[1]
    width, height = font.size(text)
    position = x-width//2, y-height//2
    render = font.render(text, 1, color)
    surface.blit(render, position)

非常感谢你给我的任何帮助!

一个选项是定义一个表面大小的文本,用你想要的颜色填充它,然后在其上加上文本。 例如,你可以这样做:

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的更好选项将来自更有经验的用户。 我也不太擅长混合模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM