Ia**********@gm ail.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.Fon t(font_fn, size)
images = []
for i, c in enumerate("colo red 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.Fon t(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