2011-06-24 7 views
2

Je peux définir une image pour qu'elle soit transparente en utilisant à la fois la méthode set_colorkey et la méthode convert_alpha sur un fond de surface. Cependant, lorsque j'essaie de superposer deux images, la transparence est perdue pour une raison quelconque.pouvez-vous rendre une image transparente sur une autre image dans pygame?

Donc, je le répète, est-il un moyen de faire partie d'une image transparente sur une autre image (par exemple, deux fichiers PNG ou GIF)

+1

Pouvez-vous poster du code? Est-ce que vous mélangez les deux images sur le fond, ou l'une sur l'autre et ensuite sur l'arrière-plan? Comment définissez-vous les surfaces et chargez les images? –

+0

Vous bluffez d'une surface à l'autre, ou les deux à l'écran? – ninMonkey

Répondre

0

Je ne sais pas si vous utilisez le comportement « buggy » ou ne pas. Il est possible que l'alpha de clé de couleur ne supporte pas ce que vous essayez de faire, et il est possible que vous définissiez mal vos données de pixel, ou qu'il y ait une sorte de bug (pilote vidéo ou pygame) que vous êtes expérimenter.

Mais j'ai un travail autour de vous:

http://www.pygame.org/docs/ref/surface.html

Il existe trois types de transparence pris en charge dans Pygame: Recherches couleurs, alphas de surface, et alphas pixel

Vous pouvez essayer pixel alphas. Il sera plus flexible que l'alpha à clé de couleur, et devrait prendre en charge autant de calques que vous le souhaitez.

Vous pouvez le faire en passant SRCALPHA lors de la création de la surface et en vous assurant que vos données de pixel en entrée ont un canal alpha correctement défini.

+0

D'accord, cela peut être une question de type débutant .... Je comprends que vous pouvez passer 'SRCAPLHA' à une surface comme ceci' image = pygame.Surface ([640,480], SRCALPHA, 32) 'mais comment le feriez-vous pour une image que vous chargez 'image = pygame.image.load (filename)'. Il semble que le seul paramètre qu'il prend est le nom de fichier, non? –

+0

@ sq1020: Formatez simplement votre fichier correctement (créez le canal alpha correctement dans votre programme de peinture), et j'espère que pygame fait le gros du travail pour vous. Si non, alors désolé je ne peux pas aider. Je n'ai pas travaillé avec pygame, juste SDL (qui a une API similaire pour de telles choses), et cela fait quelques années que je l'ai fait :) –

+0

@ sq1020: Mais si cette option ne fonctionne pas, laissez Je sais et je vais l'effacer pour ne pas effrayer de nouvelles réponses. –

Questions connexes