2011-07-09 3 views

Répondre

32

En supposant que vous utilisez XNA 4.0 avec alpha précultiplié. Dans votre spritebatch.draw, multipliez la couleur par un float, 0.5f par 50% de transparence, et dessinez comme vous le feriez normalement. Si vous n'utilisez pas l'alpha prémultiplié, je vous suggère de le faire pour des raisons de performance et c'est plus intuitif après vous y être habitué.

Exemple:

_spriteBatch.Draw(texture, location, Color.White * 0.5f); 

Edit: Assurez-vous également que vous définissez votre état de mélange à BlendState.AlphaBlend, ou d'un autre état de mélange qui prend en charge l'alpha et n'est pas NonPremultiplied.

Exemple:

_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); 
+7

Utilisation de l'opérateur de multiplication sur 'Color' quatre canaux module (RGBA) et ne prévoit que le changement attendu dans la transparence lors de l'utilisation des modes de fusion prémultipliées (par exemple:' AlphaBlend'). Pour que les autres états de mélange fonctionnent comme prévu (par exemple: 'Additive' et' NonPremultiplied'), vous devez définir directement la valeur alpha de la couleur (en laissant RVB seul). –

6

Il suffit d'utiliser la couleur comme new Color(RGBA); où:

  • R est rouge
  • G est vert
  • B est bleu
  • A est Alpha

Par exemple:

new Color(100, 100, 100, 100); 
+2

Cela n'a peut-être pas été intentionnel mais vous venez de me montrer que le paramètre 'Color' n'est pas enum lol! Je n'avais aucune idée que tu pouvais créer tes propres couleurs comme ça. – TheGateKeeper

Questions connexes