how to create a multicolor "font-string" in pygame??
Diez B. Roggisch
deets at nospam.web.de
Thu Nov 9 17:54:49 EST 2006
Iacopo.Marmo at gmail.com schrieb:
> Hi! I need to manipulate multicolor strings, i.e. strings with a color
> associated with each letter.
> Any suggestions?
There is no support for multi-color strings as such in pygame. If you
use a fixed-width font, things are easy. Just create the strings one
after another using spaces as prefix. E.g.
back = (0,0,0)
font = pygame.font.Font(font_fn, size)
images = []
for i, c in enumerate("colored string"):
s = " " * i + c
color = color_for_index(i)
s_image = font.render(s, True, color, back)
images.append(s_image)
Then blit the images onto each other.
If you don't use fixed widht fonts, things get more complicated. Then
you should calculate the size of the prefix to a certain characer, and
store that together with the image:
text = "colored string"
back = (0,0,0)
font = pygame.font.Font(font_fn, size)
images = []
for i, c in enumerate(text):
s = " " * i + c
color = color_for_index(i)
prefix_offest = font.size(text[:i])
s_image = font.render(s, True, color, back)
images.append((prefix_offset, s_image))
Then you have to combine the images according to the prefix offset.
Diez
More information about the Python-list
mailing list