2009-05-18 2 views
0

J'ai une image-objet chargée à partir d'un fichier PNG avec un canal alpha. L'image contient un disque opaque, et le reste est transparent.XNA: Application de la couleur SpriteBatch.Draw (...) uniquement aux pixels non transparents

Je veux utiliser l'argument color de SpriteBatch.Draw(...) pour changer la teinte du disque. Toutefois, le comportement de fusion par défaut applique la couleur à l'image-objet entière, donc je me retrouve avec un contour carré opaque autour du disque teinté.

Y at-il un moyen de modifier le mode de fusion afin que les pixels transparents ne soient pas affectés par l'argument color?

Répondre

1

Je n'ai jamais vu cela se produire, et j'ai travaillé avec des PNG transparents comme celui-ci depuis le début de XNA. Mélangez-vous 2D et 3D? Si c'est le cas, votre paramètre de rendu 3D peut être source de confusion SpriteBatch, mais je pensais que SpriteBatch était censé les définir correctement pour vous. Peut-être que quelque chose ne va pas avec l'image PNG que vous utilisez?

0

Bill, vous avez raison. J'ai oublié d'effacer l'arrière-plan dans l'un des PNG. La question devrait être supprimée.

+0

Non, ne le supprimez pas! C'est pour ça que StackOverflow est. Si quelqu'un se heurtait à un problème similaire, cet AQ pourrait en fait lui indiquer une direction à laquelle il n'avait pas pensé. –

+0

Btw, au lieu de répondre Bill avec une "réponse" à votre propre question, utilisez le système de commentaire. –

+0

Désolé, j'ai pensé que j'avais besoin de 50 points de réputation pour pouvoir poster des commentaires. – kpozin

Questions connexes