用自定义图案填充 pygame 字体
Fill pygame font with custom pattern
我目前正在 Python/Pygame 进行(第一个)项目,我正在尝试显示带有图案叠加层的文本。该图案由垂直线(1 像素宽)、2 种交替颜色组成。
我正在使用 pygame.draw.line() 创建此图案,并且我可以使用我创建的自定义函数创建矩形。但现在我想在我的字体上使用这种图案。
我是 Python 的新手,我想知道:有没有办法创建某种掩码,使图案仅出现在字体字符上,而不出现在字体字符之外?我在网上搜索了一段时间,但找不到任何东西。
非常感谢!
您可以使用不同的混合模式来获得您想要的效果。
这是一个简单的示例(其中 t.bmp
是带有您的图案的图像,当然您可以使用任何其他表面):
import pygame
pygame.init()
screen = pygame.display.set_mode((490, 160))
font = pygame.font.SysFont('Arial', 150)
pattern = pygame.image.load('t.bmp').convert()
text = font.render('FooBar', True, (255, 255, 255), (0, 0, 0))
pattern.blit(text, (0, 0), special_flags = pygame.BLEND_MULT)
screen.blit(pattern, (0, 0))
pygame.display.flip();
while True:
if pygame.event.get(pygame.QUIT):
break
结果:
我目前正在 Python/Pygame 进行(第一个)项目,我正在尝试显示带有图案叠加层的文本。该图案由垂直线(1 像素宽)、2 种交替颜色组成。
我正在使用 pygame.draw.line() 创建此图案,并且我可以使用我创建的自定义函数创建矩形。但现在我想在我的字体上使用这种图案。
我是 Python 的新手,我想知道:有没有办法创建某种掩码,使图案仅出现在字体字符上,而不出现在字体字符之外?我在网上搜索了一段时间,但找不到任何东西。
非常感谢!
您可以使用不同的混合模式来获得您想要的效果。
这是一个简单的示例(其中 t.bmp
是带有您的图案的图像,当然您可以使用任何其他表面):
import pygame
pygame.init()
screen = pygame.display.set_mode((490, 160))
font = pygame.font.SysFont('Arial', 150)
pattern = pygame.image.load('t.bmp').convert()
text = font.render('FooBar', True, (255, 255, 255), (0, 0, 0))
pattern.blit(text, (0, 0), special_flags = pygame.BLEND_MULT)
screen.blit(pattern, (0, 0))
pygame.display.flip();
while True:
if pygame.event.get(pygame.QUIT):
break
结果: